首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Laravel的工匠队列中捕获ProcessTimedOutException :监听

在Laravel的工匠队列中捕获ProcessTimedOutException :监听
EN

Stack Overflow用户
提问于 2014-04-23 04:38:00
回答 7查看 5.6K关注 0票数 21

我们有一堆使用Laravel的php artisan queue:listen监视和处理的SQS作业。

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

代码语言:javascript
复制
[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中处理异常

代码语言:javascript
复制
App::error(function(Symfony\Component\Process\Exception\ProcessTimedOutException $exception) {
    // do nothing
});

不幸的是,异常仍然会发生,我的queue:listen仍然会死掉。

如何捕获此异常并在重试时忽略它?

EN

回答 7

Stack Overflow用户

发布于 2017-05-17 21:21:48

如果有帮助的话,我会使用SupervisorD来运行crons,并且让队列停止工作:每秒钟工作一次,这样我就不会有任何SQS问题了。

票数 1
EN

Stack Overflow用户

发布于 2014-11-10 14:36:24

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

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

或者两者都有。

票数 0
EN

Stack Overflow用户

发布于 2016-05-29 14:19:41

这不是一个答案,但更像是解决方法:

每当我需要确保进程运行时,即使发生错误,我也会使用npms forever。这个方便的工具会在崩溃时立即重启进程。

安装非常简单:

代码语言:javascript
复制
sudo apt-get install nodejs
sudo apt-get install npm
sudo ln -s /usr/bin/nodejs /usr/bin/node
sudo npm -g install forever

使用以下命令启动进程:forever start -c php artisan queue:listen

如果你需要停止它:forever stopall

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23229705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档