我正在爲一些後臺服務運行delayed_job,直到最近,這些服務都是單獨運行的,例如,發送電子郵件,撰寫報告等。Delayed_job在進行第二個任務時進入繁忙循環
我現在需要一個delayed_job作爲其最後一步提交另一個delayed_job。
- delay.deploy() - delayed_job的這種運行時,它會觸發部署動作,其中最後一步是...
- delay.update_status() - 當delayed_job的運行此作業時,它會檢查我們開始部署的狀態。如果部署仍在進行中,我們再次調用delay.update_status(),如果部署已停止,我們將最終部署狀態寫入db記錄。
步驟1正常工作 - 5秒後,delayed_job啓動部署,啓動部署,然後調用delay.update_status()。
但是,在這裏, 代替update_status()在5秒內啓動,delayed_job進入繁忙循環,觸發一堆update_status調用,並且在沒有暫停的情況下很難循環。
我可以看到滿足所有這些調用的日誌,服務器變慢,直到達到update_status的結束條件(部署最終成功或失敗),並且事情再次變得安靜。
我是否在使用Delayed_Job :: delay()的時候錯誤地忽略了這個用例的一個基本特徵?