【发布时间】:2013-02-11 01:03:38
【问题描述】:
当我们重新启动或部署时,我们会在失败的队列中使用 Resque::TermException (SIGTERM) 或 Resque::DirtyExit 获得许多 Resque 作业。
我们在 Procfile 中使用了新的TERM_CHILD=1 RESQUE_TERM_TIMEOUT=10,所以我们的工作行看起来像:
worker: TERM_CHILD=1 RESQUE_TERM_TIMEOUT=10 bundle exec rake environment resque:work QUEUE=critical,high,low
我们还使用了resque-retry,我认为这可能会自动重试这两个异常?但好像不是。
所以我猜有两个问题:
- 我们可以在每个作业中从
Resque::TermException手动救援,并使用它来重新安排作业。但是有没有一种干净的方法可以为所有工作做到这一点?甚至是猴子补丁。 - 不应该 resque-retry 自动重试这些吗?你能想出为什么不这样的原因吗?
谢谢!
编辑:在 10 秒内完成所有工作在规模上似乎是不合理的。似乎需要一种方法来在运行 Resque::DirtyExit 异常时自动重新排队这些作业。
【问题讨论】:
标签: heroku resque resque-retry