队列任务执行了,但是被标识为执行失败,大佬们看看咋回事

1. 运行环境

centos 7.9

1). 当前使用的 Laravel 版本?

10.48.10

2). 当前使用的 php/php-fpm 版本?

PHP 版本:8.1.13

php-fpm 版本:8.1.13

3). 当前系统

4). 业务环境

5). 相关软件版本

2. 问题描述?

注册用户后调用了事件 event(new CreateUser($user_id));

class CreateUserListener implements ShouldQueue
{
/**

  • Create the event listener. */
    public function __construct()
    {

     //

    }

    /**

  • 任务可尝试的次数。
    *

  • @var int /
    public $tries = 5;
    /*

  • 任务被处理的延迟时间(秒)
    *

    • /
      public $delay = 60;
      /

      public function handle(CreateUser $event): void
      {
      //做了一些后续处理
      }
      部署后,当用户handle里面的代码执行了,但是队列被标注为失败,failed_jobs表里面产生数据,日志里面:
      [2024-06-17 16:53:27] local.ERROR: App\Listeners\CreateProjectListener has been attempted too many times. {“exception”:”[object] (Illuminate\Queue\MaxAttemptsExceededException(code: 0): App\Listeners\CreateProjectListener has been attempted too many times.

3. 您期望得到的结果?

队列执行成功,标注为成功
//: <> (能截图就截图。)

4. 您实际得到的结果?

任务执行了,但是队列被标注为失败


//: <> (有报错信息的话把堆栈信息提供出来)

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
最佳答案

handle里面应该有什么操作是比较耗时的

执行了5次都超时了

或者你设置了failOnTimeout 执行一次如果超时就会标记失败

上面这两个好像会提示超时

但是你的提示是尝试次数太多 也可能是你手动调用了$this->release();

这个如果也达到了尝试次数就会提示尝试次数太多

看你是哪种情况了

2个月前 评论
PHP布道者 (楼主) 2个月前
cccdz (作者) 2个月前
PHP布道者 (楼主) 2个月前
cccdz (作者) 2个月前
PHP布道者 (楼主) 2个月前
cccdz (作者) 2个月前
cccdz (作者) 2个月前
cccdz (作者) 2个月前
cccdz (作者) 2个月前
PHP布道者 (楼主) 2个月前
cccdz (作者) 2个月前
cccdz (作者) 2个月前
cccdz (作者) 2个月前
PHP布道者 (楼主) 2个月前
PHP布道者 (楼主) 2个月前
cccdz (作者) 2个月前
PHP布道者 (楼主) 2个月前
yyy123456 2个月前
讨论数量: 25

超时了吧

2个月前 评论
PHP布道者 (楼主) 2个月前

handle里面应该有什么操作是比较耗时的

执行了5次都超时了

或者你设置了failOnTimeout 执行一次如果超时就会标记失败

上面这两个好像会提示超时

但是你的提示是尝试次数太多 也可能是你手动调用了$this->release();

这个如果也达到了尝试次数就会提示尝试次数太多

看你是哪种情况了

2个月前 评论
PHP布道者 (楼主) 2个月前
cccdz (作者) 2个月前
PHP布道者 (楼主) 2个月前
cccdz (作者) 2个月前
PHP布道者 (楼主) 2个月前
cccdz (作者) 2个月前
cccdz (作者) 2个月前
cccdz (作者) 2个月前
cccdz (作者) 2个月前
PHP布道者 (楼主) 2个月前
cccdz (作者) 2个月前
cccdz (作者) 2个月前
cccdz (作者) 2个月前
PHP布道者 (楼主) 2个月前
PHP布道者 (楼主) 2个月前
cccdz (作者) 2个月前
PHP布道者 (楼主) 2个月前
yyy123456 2个月前

这个可以调试排查一下,把handle业务代码注释掉,单纯写个日志,看下情况,再排除一下业务代码问题就行了。还有提问的时候注意友好书写呀。

2个月前 评论
chowjiawei

我有遇到过一个问题 结果是因为传入的参数没有public 然后 放到queue中旧一直超时 如果不放到queue中就正常执行

2个月前 评论
PHP布道者 (楼主) 2个月前
sanders

超时了,可以在代码里加 log 查一下看看哪里没执行到。

2个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!