【问题标题】:Ruby delayed_job gem how to stop processRuby delay_job gem如何停止进程
【发布时间】:2020-12-16 05:21:54
【问题描述】:

我目前正在使用delayed_job_active_record gem 来长期运行一些计划任务。这些进程在 heroku 上的一个单独的工作 dyno 上在后台运行,并且很少出错,但在某些情况下,我希望能够在运行过程中停止进程。我一直在本地运行进程,并且由于我的设置,计划任务只会启动进程,这本质上是一个非常长的循环。

使用

bin/delayed_job stop

仅停止作业,但由于进程已启动,因此不会超过此值。 因此,如果不重新启动整个测功机,我似乎无法停止该过程。这似乎有点过分,但这是我目前唯一的选择。

非常感谢任何帮助

【问题讨论】:

    标签: ruby-on-rails ruby heroku scheduled-tasks delayed-job


    【解决方案1】:

    我认为无论如何要中断它而不像你正在做的那样基本上杀死进程。我通常会删除数据库中的作业记录,然后然后终止运行它的工作人员,这样它就不会只是重试该作业(如果您为该作业启用了重试)。

    另一种选择...因为您知道它运行时间很长,而且我想它有多个步骤...模块化操作和/或添加定期检查以检查您在模型中某处放置的“已取消”标志。如果您检测到已取消的请求,则可以放弃并进行所需的任何清理。无论如何,这可能是首选,因此您可以更明确地管理中止时发生的情况。

    【讨论】:

    • 我真的很喜欢取消标志的概念。猜想我可以建立一个运营模型,并可以通过管理门户更新这些。需要时暂停或取消操作。
    猜你喜欢
    • 1970-01-01
    • 2013-04-03
    • 2012-11-08
    • 2012-08-29
    • 2010-10-07
    • 1970-01-01
    • 2012-11-09
    • 2012-09-05
    • 1970-01-01
    相关资源
    最近更新 更多