queue:workの実行オプションとして、以下を設定しテストをしていた。
--sleep=10 --timeout=1800 --tries=0
実行時間が1800秒を超えたケースを想定したテストを実行したところ、Queueが再実行され無限ループが発生した。
あれ・・・。再試行回数0なので、1回実行したら失敗ジョブに登録されるのでは・・・?
と思ったのですが、よく見てみると単純にオプションを誤解していることに気が付きました。
triesは「再試行」ではない・・・!!「試行」する回数じゃないか・・・
(英語見れば普通にわかるのにね・・・)
試行回数なので、絶対に1回は処理が走ります。
なので、タイムアウト時の再実行は2回目になります。
triesを0に設定すると無限再実行となるので気を付けましょう。
お分かりだと思いますが、再実行させたくないときは、下記が正しいです。
--sleep=10 --timeout=1800 --tries=1