【发布时间】:2019-08-20 18:45:57
【问题描述】:
如何在 Laravel Horizon 中重试 所有 失败的作业?似乎没有“全部重试”按钮,并且由于失败的作业未存储在表中,因此 artisan 命令不起作用。
【问题讨论】:
标签: php laravel laravel-5 laravel-5.8 laravel-horizon
如何在 Laravel Horizon 中重试 所有 失败的作业?似乎没有“全部重试”按钮,并且由于失败的作业未存储在表中,因此 artisan 命令不起作用。
【问题讨论】:
标签: php laravel laravel-5 laravel-5.8 laravel-horizon
queue:retry 命令接受 all 代替单个作业 ID:
php artisan queue:retry all
这会将所有失败的作业推回您的 redis 队列以重试:
The failed job [44] has been pushed back onto the queue!
The failed job [43] has been pushed back onto the queue!
...
如果您没有根据安装指南创建失败日志表:
php artisan queue:failed-table
php artisan migrate
那么你可能会上一条小河。也许尝试手动与 redis 交互并尝试直接访问失败的作业列表(假设失败的作业条目没有被擦除 - 看起来他们默认在 redis 中保留一周,基于config/horizon.php 中的配置设置) .
【讨论】:
因为失败的作业没有存储在表中
实际上,您应该创建该表。来自Laravel Horizon documentation:
您还应该创建 Laravel 将使用的
failed_jobs表 存储任何失败的队列作业:php artisan queue:failed-table php artisan migrate
然后,到retry failed jobs:
重试失败的作业
查看已插入您的所有失败作业
failed_jobs数据库表,你可以使用queue:failedArtisan 命令:php artisan queue:failed
queue:failed命令将列出作业 ID、连接、队列、 和失败时间。作业 ID 可用于重试失败的作业。为了 例如,要重试 ID 为 5 的失败作业,请发出 以下命令:php artisan queue:retry 5
【讨论】: