你如何告诉一个特定的 Delayed::Job 在控制台中运行?
Posted
技术标签:
【中文标题】你如何告诉一个特定的 Delayed::Job 在控制台中运行?【英文标题】:How do you tell a specific Delayed::Job to run in console? 【发布时间】:2011-10-20 05:40:17 【问题描述】:由于某种原因,Delayed::Job's 决定排队但不执行任何操作,即使我已经重新启动了几次,甚至杀死 -9 并重新启动它。它不会运行任何作业。
我可以在 /console 中指定一个特定的工作并告诉它工作吗?
例如:..Delayed::Job.find(x).run
【问题讨论】:
Manually Retry Job in Delayed_job的可能重复 【参考方案1】:你也可以这样做:
Delayed::Worker.new.run( Delayed::Job.find(x) )
【讨论】:
这是最好的答案,它会在完成后删除工作。谢谢 Delayed::Worker.new.run(Delayed::Job.find(id)) 我同意@mrt 的评论,你应该确保你运行正确的工作 如果我想运行特定队列的多个延迟作业,我该怎么做?请帮忙 唯一不会做的就是将该行标记为锁定。【参考方案2】:回答如何从控制台运行特定作业:
Delayed::Job.find(x).invoke_job
但您必须记住,它不会运行任何其他操作,例如破坏已完成的作业等。只是运行作业/任务。
【讨论】:
仔细阅读答案的作者注释:“它不会运行任何其他事情,例如破坏已完成的工作”。我这么说是因为我没有读过它,而且我快疯了。检查@DavidTuite's answer【参考方案3】:在 Heroku 上,我有一个“卡住”的工作,只需要运行 heroku restart
让工人/工作重新开始。
【讨论】:
感谢您的积极评价 ;-) 可能是提问的人(或提出这个问题的人)在 Heroku 上遇到了问题。以上是关于你如何告诉一个特定的 Delayed::Job 在控制台中运行?的主要内容,如果未能解决你的问题,请参考以下文章
使用 Delayed::Job 时使用 ActiveJob 设置优先级