再起動またはデプロイすると、失敗したキューに または のいずれかで多数の Resque ジョブが取得されResque::TermException (SIGTERM)
ますResque::DirtyExit
。
TERM_CHILD=1 RESQUE_TERM_TIMEOUT=10
Procfileで new を使用しているため、worker 行は次のようになります。
worker: TERM_CHILD=1 RESQUE_TERM_TIMEOUT=10 bundle exec rake environment resque:work QUEUE=critical,high,low
resque-retry
これら2つの例外で自動再試行されると思われるものも使用していますか? しかし、そうではないようです。
だから私は2つの質問を推測します:
- 各ジョブで手動でレスキューし
Resque::TermException
、これを使用してジョブを再スケジュールできます。しかし、すべてのジョブに対してこれを行うクリーンな方法はありますか? モンキーパッチも。 - これらを resque-retry 自動再試行すべきではありませんか? そうでない理由が何か思いつきますか?
ありがとう!
編集:すべてのジョブを 10 秒以内に完了させることは、規模的には不合理に思えます。Resque::DirtyExit 例外が実行されたときに、これらのジョブを自動的に再キューイングする方法が必要なようです。