【发布时间】:2016-08-23 21:57:53
【问题描述】:
假设我将几个作业推送到 sidekiq 队列,以便立即异步执行。我有日志消息告诉我整个过程何时开始和完成
start = Time.zone.now
puts "Starting jobs"
1000.times.each do
SomeWorker.perform_async(some_arg_id)
end
end_time = Time.zone.now
runtime = end_time - start
puts "Finished jobs - that took #{runtime} seconds"
这当然有一个非常大的缺陷 - 当所有内容都被推送到队列时,它会输出作业已经完成,而不是当作业实际完成时。
我正在寻找一种方法来跟踪一批作业的完成情况。我不想每隔 X 秒轮询一次以查看队列是否为空。让队列中的最后一个作业更新数据库或使用完成时间记录似乎也很麻烦,因为不能保证它们以任何顺序完成。
是否有解决此问题的最佳做法?
谢谢!
【问题讨论】:
标签: ruby-on-rails asynchronous sidekiq