Ruby on Rails:延迟工作是否可以执行一项工作然后停止?

时间:2014-08-28 16:45:20

标签: ruby ruby-on-rails-4 delayed-job

我想一次只发送一封电子邮件,所以我每分钟都有一个脚本。是否可以只发送一封电子邮件,然后停止延迟作业发送下一个排队的作业?

2 个答案:

答案 0 :(得分:1)

您可以从DJ表中获取一个特定的作业,调用它然后将其销毁,例如:

job = Delayed::Job.last
job.invoke_job # This will NOT destroy the job
job.destroy

在此处找到:https://groups.google.com/forum/#!topic/delayed_job/5j5BmAlXN3g

答案 1 :(得分:1)

在将下一个作业放入队列之前,您可以查看已经在队列中的最后一个作业,并检查它run_at时间。然后将作业的run_at时间设置为一分钟。如果队列中没有任何作业,请将其设置为现在,或者从现在起一分钟,具体取决于您需要大约一分钟之间的严格程度。