从最后开始迭代ruby数据库

时间:2014-12-03 03:16:36

标签: ruby-on-rails ruby

现在我循环浏览ruby / rails数据库中的记录,进行API调用。

我的代码是:

Item.find_each(start: 0, batch_size: 5000) do |item|

response = request(params)

end

但是,我想启动第二个线程来加速进程,但让第二个线程从表的末尾开始,然后向后工作。

是否有开箱即用的方式来做到这一点?

1 个答案:

答案 0 :(得分:0)

可能如果你对api没有太多控制权,也没有api文件能提供你想做的事情,那就不可能了。

如果我理解你的情况,你可以做的最好的事情就是将数据分成多个块,并为负责阅读它的每个人运行进程(或线程或任何适合你的情况)。考虑到您的约束(例如,允许的每秒请求数,每个请求失败的可能性,您知道进程挂起或不工作的速度等),您应该决定划分数据的块数量。

e.g。

如果您运行500个进程,每个进程只负责读取10条记录,您将能够避免所有进程都挂起的情况,而这将花费500秒来运行所有进程。