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/
很多时候我会有这样的后台工作代码。
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/