Sidekiq ActiveJob跟踪产生的工作

时间:2015-05-22 16:27:26

标签: ruby-on-rails sidekiq

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

class MyJob < ActiveJob::Base

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

基本上,一项工作会产生许多儿童工作。是否有一种简单的方法可以知道所有工作何时完成?我知道我可以在父工作中增加一个计数器,让每个子工作减少那个计数器。但是,任何试图这样做的人都会告诉你,你可能会遇到一些并发症。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

这是Sidekiq Pro的Batch功能。你是对的:正确构建非常困难。我不知道任何实现它的开源库。

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