摧毁轨道中所有延迟的工作

Rah*_*ali 30 ruby ruby-on-rails delayed-job

我正在使用collectiveidea for rails 2.3.8.我正在创建一系列延迟作业来执行某些任务,经过一段时间我想要销毁所有正在运行的延迟作业.如果有人知道这样做的方法,请帮助我.

Lee*_*vis 59

您只需阅读delayed_job GitHub页面的自述文件即可解决此问题:

您可以调用rake作业:清除以删除队列中的所有作业.

  • 这不符合OP的要求.他正试图杀死正在运行的工作,而不是清除队列. (4认同)

Rya*_*ner 47

除了rake任务之外,DelayedJob作业只是一个普通的ActiveRecord模型,所以如果你使用Ruby代码,你可以用它们做你喜欢的事情:

Delayed::Job.destroy_all
Delayed::Job.delete_all
Delayed::Job.find(4).destroy
# etc.
Run Code Online (Sandbox Code Playgroud)

  • `destroy`将处理Rails定义的任何回调 - 特别是,它将清除你有`dependent:destroy`或`depdendent:nullify` set的任何关联.`delete`只是从数据库中删除记录.一般来说,除非你有充分的理由,否则总是使用`destroy`而不是`delete`. (4认同)