sidekiq 的任务是否有任何“组异步等待”?

kev*_*201 0 ruby ruby-on-rails sidekiq

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

例如,我有 A、B、C 任务:

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

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

kid*_*ils 6

使用BatchesSidekiq Pro 提供的 Sidekiq。

批会让你协调你的工作以这种方式,让AB并行运行。批处理完成后,您可以分配回调和触发C在此处阅读有关回调的更多信息。

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}"
Run Code Online (Sandbox Code Playgroud)