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)回調可以輸出總時間。 –