2011-08-04 93 views
83

由於某些原因,Delayed :: Job's已經決定排隊,但是不會執行任何操作,即使我重新啓動了幾次,甚至會殺死它並重新啓動它。它不會運行任何工作。如何告訴特定的Delayed :: Job在控制檯中運行?

我可以在/ console中指定一個特定的工作並告訴它工作嗎?

例如:.. Delayed::Job.find(x).run

+0

的[在delayed_job的手動重試作業]可能重複(http://stackoverflow.com/questions/3312054/manually-retry-job-in-delayed -job) – smathy

回答

117

回答如何從控制檯運行的具體工作:

Delayed::Job.find(x).invoke_job

,但你必須記住,它不會運行任何其他像破壞作業已完成等等。只是運行工作/任務。

+2

仔細閱讀答案的作者註釋:_「它不會運行任何其他事情,比如摧毀已完成的工作」_。我這樣說是因爲我沒有閱讀,而且我瘋了。檢查[@ DavidTuite的答案](http://stackoverflow.com/a/20146200/316700) – fguillen

133

你也可以做這樣的:

Delayed::Worker.new.run(Delayed::Job.last) 
+0

不錯!感謝那! – Trip

+23

這是最好的答案,它在完成後將其刪除。謝謝 – m4risU

+11

Delayed :: Worker.new.run(Delayed :: Job.find(id)) – mrt

相關問題