0
我有一個延遲的工作運行,我想保存在運行時,當它結束時,工作人員會記錄運行到這樣的日誌...在rails中獲取延遲作業的運行時間?
XXXXXJob completed after 1.6372
我想知道你是如何從訪問此統計在延遲的工作課內?
我試過self.runtime
但那是拋出一個錯誤。
乾杯。
我有一個延遲的工作運行,我想保存在運行時,當它結束時,工作人員會記錄運行到這樣的日誌...在rails中獲取延遲作業的運行時間?
XXXXXJob completed after 1.6372
我想知道你是如何從訪問此統計在延遲的工作課內?
我試過self.runtime
但那是拋出一個錯誤。
乾杯。
恐怕delayed_job
寶石不用於訪問統計提供API。貌似here是被它們計算運行時間的地方,這就是正在發生的事情有:
runtime = Benchmark.realtime do
invoke_job
destroy
end
logger.info "* [JOB] #{name} completed after %.4f" % runtime
所以runtime
使用Benchmark
模塊計算和記錄,但它不是以備後用存儲在任何地方。
雖然,你仍然可以通過類似Benchmark.realtime
電話或類似的東西包裹它的邏輯計算工作自己運行。
另一種選擇是開放的類和重寫run方法改變的行爲。 – Nick 2012-01-02 20:16:58
是的,重新開課可以解決大部分像紅寶石般的問題。但這是最好的解決方案,如果可能的話,我最好避免它。即使您需要爲應用程序中的每個後臺作業計時,您也可以創建自己的「BaseJob」類,實現所需的邏輯並從此類中派生所有作業。 – 2012-01-02 20:24:02
在基準測試中包裝工作非常完美,dj記錄的時間與基準測試結果相匹配。如果需要重複使用,我會創建它自己的基礎工作,但可以作爲一次性工作。 – Smickie 2012-01-05 09:40:11