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 中输入了相同的作业有效负载,因此该作业的后续重试将导致相同的错误。
以防万一您需要在特定队列上重试失败的作业,您可以查看答案
提前致谢
我的问题很简单
例如,我创建了一个向用户发送电子邮件的作业。但是由于某些语法错误或任何其他异常而失败,因此 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 中输入了相同的作业有效负载,因此该作业的后续重试将导致相同的错误。
以防万一您需要在特定队列上重试失败的作业,您可以查看答案