[英]Laravel beanstalkd queue repeating jobs before retry time
我使用“beanstalkd”队列驱动程序在Laravel 5.4上配置了一个排队......我将它部署在CentOS 7(cPanel)上并安装了Supervisor ......但我有两个主要问题
在日志中,我发现此异常“local.ERROR:异常'PDOException',消息'SQLSTATE [42S02]:未找到基表或视图:1146表'{dbname} .failed_jobs'不存在”所以问题#1是..我应该为“beanstalkd”队列驱动程序配置任何数据库表,如果是这样,请说明这些表结构?
我还在Supervisor配置文件中配置了queue:work命令,如下所示
[program:test-queue] process_name=%(program_name)s_%(process_num)02d command=php /home/****/****/artisan queue:work beanstalkd --sleep=3 --tries=3 autostart=true autorestart=true user=gcarpet numprocs=8 redirect_stderr=true stdout_logfile= /home/*****/*****/storage/logs/supervisor.log
我发现supervisor.log包含多次调用该作业,即使在第一次调用“已处理”之后。 问题#2我调度了一次这个作业,但是这个作业被多次推入队列,我需要一个解决方案问题我不想在队列中多次推送相同的工作?
[2019-05-14 09:08:15] Processing: App\\Jobs\\{JobName} [2019-05-14 09:08:15] Processing: App\\Jobs\\{JobName} [2019-05-14 09:08:15] Failed: App\\Jobs\\{JobName} [2019-05-14 09:08:24] Processed: App\\Jobs\\{JobName} [2019-05-14 09:08:24] Processing: App\\Jobs\\{JobName} [2019-05-14 09:08:33] Processed: App\\Jobs\\{JobName} [2019-05-14 09:08:33] Processing: App\\Jobs\\{JobName} [2019-05-14 09:08:41] Processed: App\\Jobs\\{JobName} [2019-05-14 09:08:41] Processing: App\\Jobs\\{JobName} [2019-05-14 09:08:41] Failed: App\\Jobs\\{JobName}
php artisan queue:failed-table
php artisan migrate
此行为由队列工作程序在命令行上接收的“尝试”选项指定
php artisan queue:work --tries=3
...或特定作业的tries
属性。
<?php
namespace App\Jobs;
class Reader implements ShouldQueue
{
public $tries = 5;
}
您目前看到作业重试3次,然后失败。 检查日志记录输出和failed_jobs
表以查看抛出的异常并正确修复它们。
每当handle
方法抛出时都会重试一个作业。 重试几次后,作业将fail
,并将调用failed()
方法。 失败的作业将存储在failed_jobs
表中,以供以后参考或手动重试 。
--timeout值应始终比retry_after配置值至少短几秒。 这将确保在重试作业之前始终终止处理给定作业的工作人员。 如果--timeout选项长于retry_after配置值,则可能会处理两次作业。
请参阅工作到期和超时 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.