现在我循环浏览ruby / rails数据库中的记录,进行API调用。
我的代码是:
Item.find_each(start: 0, batch_size: 5000) do |item|
response = request(params)
end
但是,我想启动第二个线程来加速进程,但让第二个线程从表的末尾开始,然后向后工作。
是否有开箱即用的方式来做到这一点?
答案 0 :(得分:0)
可能如果你对api没有太多控制权,也没有api文件能提供你想做的事情,那就不可能了。
如果我理解你的情况,你可以做的最好的事情就是将数据分成多个块,并为负责阅读它的每个人运行进程(或线程或任何适合你的情况)。考虑到您的约束(例如,允许的每秒请求数,每个请求失败的可能性,您知道进程挂起或不工作的速度等),您应该决定划分数据的块数量。
e.g。
如果您运行500个进程,每个进程只负责读取10条记录,您将能够避免所有进程都挂起的情况,而这将花费500秒来运行所有进程。