【问题标题】:How do you tell a specific Delayed::Job to run in console?你如何告诉一个特定的 Delayed::Job 在控制台中运行?
【发布时间】:2011-10-20 05:40:17
【问题描述】:

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

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

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

【问题讨论】:

标签: ruby-on-rails 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 上遇到了问题。
猜你喜欢
  • 2018-06-14
  • 2014-09-18
  • 2011-03-06
  • 2015-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-01
相关资源
最近更新 更多