kev*_*201 0 ruby ruby-on-rails sidekiq
像 javascript 的 Promise.all 可以等待所有请求完成,然后执行以下工作。
例如,我有 A、B、C 任务:
C 需要 A 和 B 都完成运行并使用 A 和 B 计算的结果。
(因为 3 个进程都是非常昂贵的计算,所以它们被放在 sidekiq 队列中运行)
使用BatchesSidekiq Pro 提供的 Sidekiq。
批会让你协调你的工作以这种方式,让A和B并行运行。批处理完成后,您可以分配回调和触发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)
| 归档时间: |
|
| 查看次数: |
172 次 |
| 最近记录: |