1

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

4

1 回答 1

2

您是否正在使用任何类型的后台作业 gem(例如,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
于 2012-12-28T07:39:21.023 回答