Sidekiq ActiveJob 跟踪产生的工作

Sidekiq ActiveJob track spawned jobs in

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

class MyJob < ActiveJob::Base

 def perform
   User.find_in_batches.each do |batch|
     MyOtherJobToProcessBatchOfUsers.perform_later(batch)
   end
 end
end

基本上,一个作业会产生许多子作业。有没有一种简单的方法可以知道所有作业何时完成?我知道我可以在父作业中增加一个计数器,并让每个子作业递减该计数器。但是任何尝试过这样做的人都会告诉您,您可能 运行 陷入一些复杂的境地。

如有任何帮助,我们将不胜感激。

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

https://github.com/mperham/sidekiq/wiki/Batches http://sidekiq.org/pro/