相关疑难解决方法(0)

在Heroku上重启后,长时间运行的delayed_job作业保持锁定状态

重新启动Heroku工作程序时(无论是在命令上还是作为部署的结果),Heroku都会SIGTERM向工作进程发送.在这种情况下delayed_job,SIGTERM 信号被捕获,然后工作人员在当前作业(如果有)停止后停止执行.

如果工人需要很长时间才能完成,那么Heroku将会发送SIGKILL.在这种情况下delayed_job,这会在数据库中留下一个锁定的作业,不会被另一个工作人员接收.

我想确保工作最终完成(除非出现错误).鉴于此,最好的方法是什么?

我看到两个选择.但我想获得其他意见:

  1. 修改delayed_job以在收到时停止处理当前作业(并释放锁定)SIGTERM.
  2. 找出(程序化的)方法来检测孤立的锁定作业,然后解锁它们.

有什么想法吗?

ruby ruby-on-rails heroku delayed-job

14
推荐指数
3
解决办法
7595
查看次数

标签 统计

delayed-job ×1

heroku ×1

ruby ×1

ruby-on-rails ×1