如何解决Ruby delay_job gem如何停止进程
我目前正在使用delay_job_active_record gem长期运行一些计划任务。进程在heroku上的单独的dyno后台运行,很少出错,但是在某些情况下,我希望能够在运行中停止进程。我一直在本地运行这些流程,由于进行了设置,因此排定的任务只会启动该流程,这实际上是一个很长的循环。
使用
bin/delayed_job stop
仅停止作业,但由于该进程已启动,因此它没有达到最高要求。 因此,一旦开始重新启动整个测功机,我似乎无法停止该过程。这似乎有点过分,但这是我目前唯一的选择。
非常感谢您的帮助
解决方法
我认为没有任何办法可以在不像您所做的那样实质上终止进程的情况下中断它。我通常会删除数据库中的作业记录,然后然后终止正在运行该作业的工作程序,这样它不仅会重试该工作(如果您已对该工作启用重试)。
另一个选项...因为您知道它运行很长时间,并且我想它有多个步骤...模块化操作和/或为您放置在模型中某个位置的“已取消”标志添加定期检查。如果您检测到已取消的请求,则可以放弃并进行所需的任何清理。无论如何,这可能是首选,因此您可以更明确地管理在中止操作时会发生什么。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。