Queueがタイムアウトしたときに無限ループした件

2020年4月13日月曜日

Laravel Queue

t f B! P L

queue:workの実行オプションとして、以下を設定しテストをしていた。

  --sleep=10
  --timeout=1800
  --tries=0

実行時間が1800秒を超えたケースを想定したテストを実行したところ、Queueが再実行され無限ループが発生した。
あれ・・・。再試行回数0なので、1回実行したら失敗ジョブに登録されるのでは・・・?
と思ったのですが、よく見てみると単純にオプションを誤解していることに気が付きました。

triesは「再試行」ではない・・・!!「試行」する回数じゃないか・・・
(英語見れば普通にわかるのにね・・・)

試行回数なので、絶対に1回は処理が走ります。
なので、タイムアウト時の再実行は2回目になります。
triesを0に設定すると無限再実行となるので気を付けましょう。

お分かりだと思いますが、再実行させたくないときは、下記が正しいです。

  --sleep=10
  --timeout=1800
  --tries=1

注目の投稿

composer.lockはGit管理すべき話

# 背景 # 結論 # composer installとcomposer updateの違い # 背景 仕事では主にLaravelを使用して開発を行っている。 ソースコードはGitでバージョン管理を行い、compose...

プロフィール

7年ほど中小企業でSIerとして働いていました。 現在は個人事業主としてPHP, Javascriptの企業案件をメインに受けています。 最近はポケモンカードの開封にはまっています。

アーカイブ

このブログを検索

QooQ