【问题标题】:Laravel queued jobs are not retrying when they failLaravel 排队的作业在失败时不会重试
【发布时间】:2020-11-04 10:21:08
【问题描述】:

问题

我正在分派一个作业来执行一个需要准备好正确执行资源的操作,因此如果它失败了,它需要在一段时间后重试。 但真正发生的是,如果它失败了,它就不会再次执行。 我正在使用 Supervisor 来管理队列和数据库驱动程序,并且我在默认的 queue.php 配置文件中没有进行任何更改。

使用 Laravel 5.8。

我的尝试

我已经尝试在作业类中手动设置尝试次数,例如

    public $tries = 5; 

重试延迟也是一样的

    public $retryAfter = 60;

我的代码

我正在根据使用 make:job 制作的默认作业模板来实现此作业,我的构造函数和句柄方法如下所示:

    public function __construct($event, $data)
    {
        $this->event = $event;
        $this->data = $data;
    }

    public function handle()
    {
        Log::info('Job started | ' . $this->event . ' | Attempt: ' . $this->attempts());
        
        // Executes some logic and throws an Exception if it fails

        Log::info('Job succeeded | ' . $this->event);
    }

最后它没有达到“作业成功”日志,也没有记录除 1 之外的任何其他尝试。

是否有一些我遗漏的概念或者这段代码有什么错误?

【问题讨论】:

    标签: php laravel queue jobs


    【解决方案1】:

    这实际上是一个非常愚蠢的问题。但如果有人像我一样愚蠢,我会把解决方案放在这里。

    在我的 queue.php 中,默认驱动程序设置为 sync,这会导致程序只运行作业句柄方法,但不会将其排队,因为我'我说过我没有改变任何东西。所以我只是将它设置为 database 并且它已被修复。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-27
      • 2018-08-16
      相关资源
      最近更新 更多