当前位置:  开发笔记 > 编程语言 > 正文

为什么我的Laravel Queue Jobs在60秒后失败?

如何解决《为什么我的LaravelQueueJobs在60秒后失败?》经验,为你挑选了2个好方法。

情况

我正在使用Laravel Queues来处理大量的媒体文件,预计单个作业需要几分钟(最多只需要一个小时).

我正在使用Supervisor来运行我的队列,我一次运行20个进程.我的超级用户配置文件如下所示:

[program:duplitron-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/duplitron/artisan queue:listen database --timeout=0 --memory=500 --tries=1
autostart=true
autorestart=true
user=duplitron
numprocs=20
redirect_stderr=true
stdout_logfile=/var/www/duplitron/storage/logs/duplitron-worker.log

有些奇怪的事我不知道如何解释或纠正:

    运行60到65秒后,我的工作总是一直失败.

    被标记为失败后,即使被标记为失败,作业也会继续运行.最终他们最终成功解决了问题.

    当我单独运行失败的任务以找到问题的原因时,它就成功了.

我坚信这是一个超时问题; 但是,我的印象是--timeout=0会导致无限制的超时.

问题

如何防止此临时"失败"作业状态?是否有其他可能调用队列超时但我不知道的地方?



1> slifty..:

事实证明,除了超时,还有一个expire定义的设置config/queue.php

    'database' => [
        'driver' => 'database',
        'table' => 'jobs',
        'queue' => 'default',
        'expire' => 60,
    ],

将其更改为更高的值就可以了.



2> David Vielhu..:

重要说明:“ expire”现在称为“ retry_after”(Laravel 5.4)

推荐阅读
mobiledu2402852357
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有