Laravel 队列和作业 - 如何稍后重新 运行 失败的作业

Laravel Queue and Jobs - How to re run failed job later on

提前致谢

我的问题很简单

例如,我创建了一个向用户发送电子邮件的作业。但是由于某些语法错误或任何其他异常而失败,因此 laravel 会将此作业视为 failed_jobs 数据库 table 中的失败作业,稍后,让我们举个例子2 天后,我在代码中发现了问题并解决了它,现在我想重新运行 那个失败的工作,这样我的任务就可以完成

有什么方法可以做到这一点?

您可以使用以下方式查看所有失败的作业 php artisan queue:failed

如果只想重试1个job,可以用下面的(把5换成你想重试的job的ID) php artisan queue:retry 5

如果要重试多个作业,可以使用以下方法(将数字替换为要重试的作业的 ID) php artisan queue:retry 5 6 7 8 9 10

如果要重试具有数字 ID 的一系列作业,可以使用以下内容(将 5 和 10 替换为您要重试的范围) php artisan queue:retry --range=5-10

最后,如果你想重试所有失败的作业,你可以使用下面的 php artisan queue:retry all

这些都可以找到here,下次一定要查看文档:)

您可以 运行 一份工作超过 1 次

php artisan queue:work --sleep=1 --tries=5 --timeout=60

您可以运行所有失败的作业

php artisan queue:retry all

这里值得注意的是,作业在推送到队列时是序列化的。因此,如果语法错误出现在作业代码本身中,那么该作业将始终失败。

这是因为在 failed_jobs table 中输入了相同的作业有效负载,因此该作业的后续重试将导致相同的错误。

以防万一您需要在特定队列上重试失败的作业,您可以查看答案