gpt4 book ai didi

Heroku delay_job 工作人员在部署期间被杀

转载 作者:行者123 更新时间:2023-12-02 01:38:00 26 4
gpt4 key购买 nike

在 Heroku 上,我使用 delay_job 来运行异步任务。一切都很好,直到我执行了 git push heroku master,然后 Heroku 环境杀死了所有进程中的工作线程。

这里的问题是这些作业永远不会重新排队,因为我的数据库中的 delay_job 表显示它们仍然处于锁定状态并正在运行,即使曾经为它们提供服务的工作人员早已死亡。

我如何防止这种情况发生?我希望 Heroku 在关闭之前等待所有正在进行的延迟作业完成或出错,或者至少终止它们并允许在服务器从正在应用的更改重新启动后重新启动后分配新的工作人员通过我的更新。

最佳答案

看起来您可以配置 DJ 来处理 SIGTERM 并将正在进行的作业标记为失败(因此它们将再次重新启动):

Use this setting to throw an exception on TERM signals by adding this in your initializer:

Delayed::Worker.raise_signal_exceptions = :term


此答案中的更多信息:
https://stackoverflow.com/a/16811844/1715829

关于Heroku delay_job 工作人员在部署期间被杀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29908445/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com