重新启动Heroku工作程序时(无论是在命令上还是作为部署的结果),Heroku都会SIGTERM向工作进程发送.在这种情况下delayed_job,SIGTERM 信号被捕获,然后工作人员在当前作业(如果有)停止后停止执行.
如果工人需要很长时间才能完成,那么Heroku将会发送SIGKILL.在这种情况下delayed_job,这会在数据库中留下一个锁定的作业,不会被另一个工作人员接收.
我想确保工作最终完成(除非出现错误).鉴于此,最好的方法是什么?
我看到两个选择.但我想获得其他意见:
delayed_job以在收到时停止处理当前作业(并释放锁定)SIGTERM.有什么想法吗?