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 一起提供。
批处理可以让您以这种方式安排您的工作,并让 A
和 B
运行 并行。批处理完成后,你可以分配一个回调并触发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}"
像javascript的Promise.all可以等待所有请求完成,然后执行以下工作。
比如我有A、B、C任务:
C 需要 A 和 B 都完成到 运行 并使用 A 和 B 计算的结果。
(因为3个进程都是非常昂贵的计算所以它们被放在sidekiq队列中到运行)
使用 Sidekiq Batches
,它随 Sidekiq Pro 一起提供。
批处理可以让您以这种方式安排您的工作,并让 A
和 B
运行 并行。批处理完成后,你可以分配一个回调并触发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}"