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

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 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案

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

执行了5次都超时了

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

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

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

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

看你是哪种情况了

1个月前 评论
IT学徒 (楼主) 1个月前
cccdz (作者) 1个月前
IT学徒 (楼主) 1个月前
cccdz (作者) 1个月前
IT学徒 (楼主) 1个月前
cccdz (作者) 1个月前
cccdz (作者) 1个月前
cccdz (作者) 1个月前
cccdz (作者) 1个月前
IT学徒 (楼主) 1个月前
cccdz (作者) 1个月前
cccdz (作者) 1个月前
cccdz (作者) 1个月前
IT学徒 (楼主) 1个月前
IT学徒 (楼主) 1个月前
cccdz (作者) 1个月前
IT学徒 (楼主) 1个月前
yyy123456 1个月前
讨论数量: 25

超时了吧

1个月前 评论
IT学徒 (楼主) 1个月前

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

执行了5次都超时了

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

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

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

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

看你是哪种情况了

1个月前 评论
IT学徒 (楼主) 1个月前
cccdz (作者) 1个月前
IT学徒 (楼主) 1个月前
cccdz (作者) 1个月前
IT学徒 (楼主) 1个月前
cccdz (作者) 1个月前
cccdz (作者) 1个月前
cccdz (作者) 1个月前
cccdz (作者) 1个月前
IT学徒 (楼主) 1个月前
cccdz (作者) 1个月前
cccdz (作者) 1个月前
cccdz (作者) 1个月前
IT学徒 (楼主) 1个月前
IT学徒 (楼主) 1个月前
cccdz (作者) 1个月前
IT学徒 (楼主) 1个月前
yyy123456 1个月前

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

1个月前 评论
chowjiawei

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

1个月前 评论
IT学徒 (楼主) 1个月前
sanders

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

1个月前 评论

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