bunty's blog

ググったこととか勉強したことのメモ

Laravel の キューワーカがタイムアウトした場合にはプロセスを停止するので注意

ここら辺ちゃんと理解していないくて事故ったことがあるのでメモ。

ドキュメントにあるように、こんな感じでタイムアウトを設定してキューワーカを実行していた。

php artisan queue:work --timeout=30

タイムアウトした場合にその処理だけが失敗となり次のワーカを使用した処理は正常に動くのかと思っていたが、実際にはプロセスを停止していて、その後のワーカを使用した処理が動かなくなってしまっていた。

Tip!! queue:workプロセスをバックグラウンドで永続的に実行し続けるには、Supervisorなどのプロセスモニタを使用して、キューワーカの実行が停止しないようにする必要があります。

本番環境では、queue:workプロセスを実行し続ける手段が必要です。queue:workプロセスは、ワーカタイムアウトの超過や、queue:restartコマンドの実行など、さまざまな理由で実行を停止する場合があります。

とのことで、ちゃんとドキュメントに書いてありました。