您如何告诉特定的Delayed :: Job在控制台中运行?


95

由于某些原因,Delayed :: Job's决定排队,但不执行任何操作,即使我已将其重新启动了几次,甚至杀死-9并重新启动它。它不会运行任何作业。

我可以在/ console中指定一个特定的工作并告诉它工作吗?

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


Answers:


130

回答如何从控制台运行特定作业:

Delayed::Job.find(x).invoke_job

但您必须记住,它不会执行任何其他操作,例如销毁已完成的工作等。只是运行工作/任务。


4
仔细阅读答案的作者注释:“它不会执行任何其他事情,例如破坏已完成的工作”。我之所以这样说,是因为我没有读过它,而且我快疯了。检查@DavidTuite的答案
fguillen

164

您也可以这样做:

Delayed::Worker.new.run( Delayed::Job.find(x) ) 

真好!感谢那!
旅行

26
这是最好的答案,它会在完成后删除作业。谢谢
m4risU 2014年

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

优秀的。同意@ m4risU。
克里斯·斯科特

我同意@mrt的评论,您应该确保您运行正确的工作
Jonny

0

在Heroku上,我有一个“卡住”的工作,只好跑去heroku restart让工人/工作重新开始。


感谢您的正面评价;-)可能是询问的人-或遇到此问题的人-在Heroku上遇到了问题。
索姆
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.