SIGTERM
。在delayed_job
中,SIGTERM
信号被捕获,然后worker在当前工作完成后停止执行。如果worker需要执行的任务时间太长,那么Heroku会发送
SIGKILL
信号。在delayed_job
中,这将导致一个被锁定的任务留在数据库中,不会被其他worker选择。我想确保任务最终能够完成(除非出现错误)。在这种情况下,应该如何处理?
我有两个选项,请给予意见:
1.修改
delayed_job
,使其在收到SIGTERM
时停止当前任务(并释放锁)。2.找出一种(程序化)检测孤立锁定任务并解锁它们的方法。
您有什么想法吗?
SignalException
的问题?看起来你将不得不重新运行该作业。似乎需要更加强调使作业100%原子化。 - maletor