sidekiq的任务有没有'group async wait'?

Is there any 'group async wait' for sidekiq's tasks?

像javascript的Promise.all可以等待所有请求完成,然后执行以下工作。

比如我有A、B、C任务:

C 需要 A 和 B 都完成到 运行 并使用 A 和 B 计算的结果。

(因为3个进程都是非常昂贵的计算所以它们被放在sidekiq队列中到运行)

使用 Sidekiq Batches,它随 Sidekiq Pro 一起提供。

批处理可以让您以这种方式安排您的工作,并让 AB 运行 并行。批处理完成后,你可以分配一个回调并触发C。详细了解 callbacks here

class MyCallback
  def on_success(status, options)
    # Initiate call for C
  end
end

batch = Sidekiq::Batch.new
batch.on(:success, MyCallback)
batch.jobs do
  [a, b].each { |job| GenericJobWorker.perform_async(job) }
end
puts "Just started Batch #{batch.bid}"