如何在Rails中暂停和恢复delayed_job任务

3

有没有办法在Rails中暂停和恢复延迟作业的长任务。 在我的情况下,一个任务正在使用Twilio发送几百条短信。 我希望允许用户暂停和恢复短信发送进度。 这可能吗? 请告诉我。

1个回答

2
很遗憾,在延迟作业(delayed_job)中,没有内置的暂停和恢复作业的方法。请参阅以下GitHub问题:https://github.com/collectiveidea/delayed_job/issues/58 这并不是说你不能通过额外的工作完成此操作。您可以定期检查数据库以查看作业是否应等待继续执行。如何实现“等待”是另一个故事。最有可能的是,您最好设计一种方式来停止当前作业并保存其状态以实现“暂停”操作。然后,“恢复”将启动另一个作业,继续上次离开的地方。

谢谢。我已经设计了一种定义工作状态以便恢复或重新安排的方法。但是我现在遇到了停止正在运行的工作的问题。有没有办法停止delayed_job中特定的正在运行的工作? - Maruf Hasan Bulbul
@MarufHasan 我认为你可以采用类似的方法。使运行的作业定期检查其当前状态,如果被告知停止,则停止执行作业的剩余部分,并可能在表示延迟作业的ActiveRecord对象上调用destroy。这个问题讨论了删除那些delayed_job对象:https://dev59.com/nnA65IYBdhLWcg3wxRs8 - Marc Baumbach

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接