【问题标题】:Why do my failed jobs disappear after migration to Laravel 5.8?为什么迁移到 Laravel 5.8 后我的失败作业消失了?
【发布时间】:2019-04-10 13:12:52
【问题描述】:

我有一个带有队列的 Laravel 项目,每天运行约 1000 个作业。

当作业失败时,在 5.7 中,它被移动到 failed_jobs 表,我可以重试它。

迁移到 Laravel 5.8 后,作业就消失了。

此代码应将作业标记为失败并将其放入 failed-jobs 表中。

    /**
     * Execute the job.
     */
    public function handle()
    {
        throw new \Exception('WRONG JOB');
    }

这种情况下的主管日志:

[2019-04-10 15:07:57][11932] Processing: App\Jobs\ExecuteAction

好像执行停止了,没有调用Queue::failing事件。

此代码有效,但对我来说似乎不正确。

class ExecuteAction implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    /**
     * Execute the job.
     */
    public function handle()
    {
        try {
            throw new \Exception('WROOONG');
        } catch (\Exception $e) {
            if ($this->attempts() < $this->tries) {
                $this->release(10);
            } else {
                $this->fail($e);
            }
        }
    }
}

Queue::failing 事件被调用。

主管日志;

[2019-04-10 15:06:52][11926] Processing: App\Jobs\ExecuteAction
[2019-04-10 15:06:52][11926] Failed:     App\Jobs\ExecuteAction
[2019-04-10 15:06:52][11926] Processed:  App\Jobs\ExecuteAction

在主管配置中

command=php /path/to/laravel-project/artisan queue:listen

我做错了什么?

感谢您的帮助。

【问题讨论】:

  • 您使用的是什么队列驱动程序?
  • 嗨,我正在使用database。
  • 如果您不指定 --tries 选项。该作业将永远不会存储在失败的表中...
  • @shock_gone_wild 阅读文档后并不明显,但通过查看框架中的 Worker 代码,您似乎是对的。该文档还解释说我可以在我的工作类中使用public $tries = 5;,但它似乎没有使用。
  • 据我所知,public $tries = 5 正在工作。我只是通过指定 --tries=2 而没有指定 --tries ind worker 命令对其进行了测试。在这两种情况下,在 5 次尝试后,作业都会发送到失败的作业表

标签: laravel laravel-queue laravel-5.8


【解决方案1】:

发件人: https://laravel.com/docs/5.8/queues

命令:queue:listen 已从文档中删除,现在推荐使用队列的方法是运行:queue:work。

见:https://laravel.com/docs/5.8/queues#running-the-queue-worker

或者您可以使用: Laravel Horizon

【讨论】:

  • 您好,感谢您的回复。我使用 queue:listen 是因为在 http 请求上执行了数千个作业后出现内存泄漏。我试过queue:work,问题是一样的。关于 Horizo​​n,我不能使用它,因为我的队列连接是 database,它只适用于 redis。
  • 可以提供日志吗?
猜你喜欢
  • 2014-10-24
  • 2016-04-01
  • 1970-01-01
  • 2021-01-20
  • 1970-01-01
  • 2016-02-16
  • 2019-06-03
  • 1970-01-01
相关资源
最近更新 更多