これは、laravel 5.3、beanstalk、ttr、およびQueueおよびQueueWorkersで動作するタイムアウトに関連しています。 TTR:https://github.com/kr/beanstalkd/wiki/faqTTRがなくなったときQueueWorkerはどうなりますか?
キューからのジョブが正しく理解できれば、QueueWorkerがそれを選択するときに状態が予約されます。このジョブ状態は、ttrがなくなるとreadyに戻されます。しかし、QueueWorkerはどうなりますか?
php artisan queue:work --tries=1 --timeout=600 --sleep=0
TTRは60秒に設定し、デフォルトとして、次のとおりです。
はのはQueueWorkerは、次のコマンドで600に設定されたタイムアウトを持っているとしましょう。
ジョブ中に別のサイトにリクエストが行われ、応答までに120秒かかります。 60秒後、ジョブはTTRのために準備完了状態に戻されます。応答が受信されるまでQueueWorkerは仕事を続けますか?最大600秒ですか?あるいは、TTRに達したときにQueueWorkerが仕事をやめるのでしょうか?
のソースを掘りますか? – MmynameStackflow
正しい。 TTRの仕組みの詳細についてはhttps://github.com/kr/beanstalkd/wiki/faq#how-does-ttr-work –
タイムアウトを60秒以上に設定するのはどうですか?今、2番目のQueueWorkerはTTRがなくなり、ジョブを削除しようとしたときに最初のQueueWorkerがジョブを見つけられなくなるため問題を引き起こす準備完了状態になるため、ジョブを選択します。 TTRより高いタイムアウトを使用する場合、タイムアウトに達するまでTTRが時間切れになるのを防ぐために、しばらくの間、ジョブを「タッチ」する必要があります。私は正しいですか? – MmynameStackflow