在Laravel的工匠队列中捕获ProcessTimedOutException:listen

2022-08-30 20:10:57

我们有一堆 SQS 作业,我们使用 Laravel 的 .php artisan queue:listen

周期性地,有几分钟的闪光点和 SQS 超时。发生这种情况时,将中止并显示如下消息:queue:listen

[Symfony\Component\Process\Exception\ProcessTimedOutException]                                                                                             
  The process "php artisan queue:work
    --queue="https://sqs.us-west-2.amazonaws.com/*******/queue"
    --delay=0 --memory=128 --sleep=3 --tries=0 -env=production"
  exceeded the timeout of 60 seconds.

我尝试过在 中处理异常,或者:app/start/global.phpapp/start/artisan.php

App::error(function(Symfony\Component\Process\Exception\ProcessTimedOutException $exception) {
    // do nothing
});

不幸的是,例外仍然发生,我的仍然死了。queue:listen

如何捕获此异常并忽略它以进行重试?


答案 1

如果它有帮助,我使用 SupervisorD 来运行 crons,并且我每秒都会启动队列:工作,那么我对 SQS 没有任何问题。


答案 2

您要么重新运行“php artisan queue:work ...”异常处理程序中的队列作业,

或者将 /vendor/symfony/process/Symfony/Component/Process/Process::setTimeout() 值提高到更高。

或者两者兼而有之。


推荐