2012-01-02 58 views
0

我有一個延遲的工作運行,我想保存在運行時,當它結束時,工作人員會記錄運行到這樣的日誌...在rails中獲取延遲作業的運行時間?

XXXXXJob completed after 1.6372 

我想知道你是如何從訪問此統計在延遲的工作課內?

我試過self.runtime但那是拋出一個錯誤。

乾杯。

回答

1

恐怕delayed_job寶石不用於訪問統計提供API。貌似here是被它們計算運行時間的地方,這就是正在發生的事情有:

runtime = Benchmark.realtime do 
    invoke_job 
    destroy 
end 
logger.info "* [JOB] #{name} completed after %.4f" % runtime 

所以runtime使用Benchmark模塊計算和記錄,但它不是以備後用存儲在任何地方。

雖然,你仍然可以通過類似Benchmark.realtime電話或類似的東西包裹它的邏輯計算工作自己運行。

+0

另一種選擇是開放的類和重寫run方法改變的行爲。 – Nick 2012-01-02 20:16:58

+1

是的,重新開課可以解決大部分像紅寶石般的問題。但這是最好的解決方案,如果可能的話,我最好避免它。即使您需要爲應用程序中的每個後臺作業計時,您也可以創建自己的「BaseJob」類,實現所需的邏輯並從此類中派生所有作業。 – 2012-01-02 20:24:02

+0

在基準測試中包裝工作非常完美,dj記錄的時間與基準測試結果相匹配。如果需要重複使用,我會創建它自己的基礎工作,但可以作爲一次性工作。 – Smickie 2012-01-05 09:40:11