0
比方说,我将多个作业推送到sidekiq队列中,以立即异步执行。我有日志,告诉我,当整个过程已经开始的消息,并完成跟踪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秒轮询一次以查看队列是否为空。队列中的最后一项工作更新数据库或记录完成的时间似乎很棘手,因为它们无法以任何顺序完成。
有没有最佳做法来解决这个问题?
谢谢!
正确,on(:success)回调可以输出总时间。 –