执行rake任务以获取更长的数据

时间:2012-12-28 06:34:22

标签: ruby-on-rails ruby-on-rails-3 rake-task

我有一个rake任务来更新数据库中的字段(比如img_name)。在我的数据库中,我有超过75,000条记录。如果我运行rake任务意味着它花费超过1小时来完成rake任务。我想为每10,000条记录运行rake任务。我的意思是第一次有10,000条记录,第二次是10,000条记录,依此类推。谁能帮我吗?在此先感谢。

1 个答案:

答案 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