我有一个rake任务来更新数据库中的字段(比如img_name)。在我的数据库中,我有超过75,000条记录。如果我运行rake任务意味着它花费超过1小时来完成rake任务。我想为每10,000条记录运行rake任务。我的意思是第一次有10,000条记录,第二次是10,000条记录,依此类推。谁能帮我吗?在此先感谢。
答案 0 :(得分:2)
您是否有任何类型的后台工作宝石(例如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