Ruby on rails Sidekiq ActiveJob track在中生成了作业

Ruby on rails Sidekiq ActiveJob track在中生成了作业,ruby-on-rails,sidekiq,Ruby On Rails,Sidekiq,很多时候我会有这样的后台工作代码 class MyJob < ActiveJob::Base def perform User.find_in_batches.each do |batch| MyOtherJobToProcessBatchOfUsers.perform_later(batch) end end end classmyjob

很多时候我会有这样的后台工作代码

class MyJob < ActiveJob::Base

 def perform
   User.find_in_batches.each do |batch|
     MyOtherJobToProcessBatchOfUsers.perform_later(batch)
   end
 end
end
classmyjob
基本上,一个工作产生了许多子工作。有没有一种简单的方法可以知道所有工作何时完成?我知道我可以在父作业中增加一个计数器,并让每个子作业减少该计数器。但是,任何试图这样做的人都会告诉你,你可能会遇到一些麻烦


任何帮助都将不胜感激

这就是Sidekiq Pro的批处理功能。你是对的:正确构建是非常困难的。我不知道有哪个开源库实现了它


谢谢你的回答,迈克。我是sidekiq的超级粉丝!我在想,当你把一个作业排队时,它会返回一个jid,这个jid也存在于redis中,你能收集所有这些jid并检查redis,看看它们是否还在运行吗?不过,这可能需要让一份工作保持温暖,才能进行某种redis轮询。谢谢你的帮助。一切皆有可能,只有你知道你的需求、预算和日程安排。困难的部分是构建一个100%工作、处理作业错误、不轮询Redis等的东西。