Выполните задачу rake для более длинных данных

У меня есть одна задача rake для обновления полей (скажем, для img_name) в базе данных. В моей базе данных более 75 000 записей. Если я запускаю задачу rake, это означает, что для выполнения задачи rake требуется более 1 часа. Я хочу запускать задачу rake для каждых 10 000 записей. Я имею в виду в первый раз 10 000 записей, во второй раз следующие 10 000 записей и так далее. Может кто-нибудь мне помочь? Заранее спасибо.


person Rukmangathan Govindarajan    schedule 28.12.2012    source источник


Ответы (1)


Используете ли вы какой-либо гем фоновой работы (например, delayed_job)? Если это так, у меня будет задача rake, которая создает кучу фоновых заданий для выполнения работы.

Если у вас есть массив, который вы перебираете, вы можете сделать это так:

items.in_groups_of(10000, false) do |batch|
  # create background job for this batch
end

Если это коллекция, вы можете использовать что-то вроде:

@items.find_in_batches(batch_size: 10000) do |batch|
  # create background job for this batch
end
person Joel Friedlaender    schedule 28.12.2012