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

如何了解Laravel排队作业失败的原因?

如何解决《如何了解Laravel排队作业失败的原因?》经验,为你挑选了1个好方法。

情况

我正在使用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

在我duplitron-worker.log,我注意到Failed: Illuminate\Queue\CallQueuedHandler@call偶然出现,我想更好地了解究竟是什么失败.我的laravel.log文件中没有任何内容(通常会出现异常).

问题

有没有方便我的方法来了解导致我的工作失败的原因?



1> Stan Smulder..:

在较新的Laravel版本exception中,failed_jobs表格中有一列包含您需要的所有信息.感谢cdarken和Toskan指出这一点!

====以下的旧方法

这是我一直在做的事情,但首先 - 确保你有一个失败的工作表!它有详细记录,查找:)

    运行该php artisan queue:failed命令以列出所有失败的作业,然后选择您之后的作业.写下ID.

    然后,确保用你的队列停止 supervisorctl stop all duplitron-worker:

    最后,确保您的.env设置为APP_DEBUG= true.

    然后跑 php artisan queue:retry {step_job_1_id}

    现在手动运行php artisan queue:listen --timeout=XXX

如果错误是结构性的(并且大多数是错误的),则应该在日志文件中使用调试堆栈失败.

祝你好运调试:-)


如果失败,--tries = 1将尝试再次运行该作业,即每个作业在被发送到失败的表之前总共2次.
我不知道在以后的版本中是否有添加,但在5.3中,失败的作业表有一个名为exception的列,你可以看到实际失败的内容,不需要上面的技巧
好吧,就像你说的那样 - 如果它运行得很好,那就不是脚本了.你把它缩小了,这是个好消息你最好的选择就是检查系统和php日志.有东西必须在那里!这很可能是超时或内存不足:)
推荐阅读
农大军乐团_697
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有