2012-03-13 55 views
19

我正在使用rails 2.3.8的collectiveidea。我正在創建一系列延遲作業到 執行一些任務,一段時間後我想銷燬所有正在運行的延遲作業。 如果有人知道如何做到這一點,請幫助我。銷燬導軌中的所有延遲作業

回答

50

你只需要閱讀的自述文件delayed_job的GitHub page工作了這一點:

您可以調用耙作業:清除刪除所有隊列中的作業。

+2

這不會做OP所要求的。他正試圖殺死正在運行的工作,而不是清理隊列。 – volx757 2015-10-16 18:50:54

35

除了rake任務,DelayedJob工作只是正常的ActiveRecord的模式,所以如果你在Ruby代碼是你可以做你與他們喜歡什麼:

Delayed::Job.destroy_all 
Delayed::Job.delete_all 
Delayed::Job.find(4).destroy 
# etc. 
+0

您能否詳細說明Delayed :: Job.find(4).destroy – codeit 2012-03-14 15:01:27

+1

@clickit它會銷燬具有id 4的延遲作業。 – lulalala 2012-08-16 08:57:47

+1

'destroy'和'delete'之間有區別嗎? – 2013-11-11 12:40:33

0

聽起來像是你」如果一組作業在一定的時間內沒有完成,就會得到一個想要超時的父進程。而不是掛在工作本身的引用上,在模型上設置一個標誌,表明該流程已經放棄。如果工作不再需要,工作可以檢查該標誌和短路。 (你的工作班也應該在超時時間內包裝其#perform方法的內容。)

試圖掛在DJ對象的引用上似乎總是一個壞主意,正如你似乎暗示的那樣。