繁体   English   中英

Laravel beanstalkd队列在重试时间之前重复工作

[英]Laravel beanstalkd queue repeating jobs before retry time

我使用“beanstalkd”队列驱动程序在Laravel 5.4上配置了一个排队......我将它部署在CentOS 7(cPanel)上并安装了Supervisor ......但我有两个主要问题

  1. 在日志中,我发现此异常“local.ERROR:异常'PDOException',消息'SQLSTATE [42S02]:未找到基表或视图:1146表'{dbname} .failed_jobs'不存在”所以问题#1是..我应该为“beanstalkd”队列驱动程序配置任何数据库表,如果是这样,请说明这些表结构?

  2. 我还在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 
  1. 我发现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} 
    1. 请注意已处理和失败作业之间的时差,另外我已将驱动程序'retry_after'设置为900一次,再设置为90次。而且我觉得它没有任何区别。
  1. 使用迁移创建表,如文档所述
php artisan queue:failed-table
php artisan migrate
  1. 这项工作失败了,所以重试了

此行为由队列工作程序在命令行上接收的“尝试”选项指定

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表中,以供以后参考或手动重试

  1. 另请注意:存在超时重试,之后需要单独设置。

--timeout值应始终比retry_after配置值至少短几秒。 这将确保在重试作业之前始终终止处理给定作业的工作人员。 如果--timeout选项长于retry_after配置值,则可能会处理两次作业。

请参阅工作到期和超时

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM