【发布时间】:2021-01-05 03:48:21
【问题描述】:
提前谢谢你
我的问题很简单
例如,我创建了一个向用户发送电子邮件的工作。但是由于某些语法错误或任何其他异常而失败,因此 laravel 将在 failed_jobs 数据库表中将此作业视为失败的作业,稍后,假设 2 天后我在代码中发现了问题我解决了它,现在我想再次重新运行那个失败的工作,以便我的任务可以完成
这样做的方法是什么?
【问题讨论】:
标签: laravel laravel-queue laravel-jobs
提前谢谢你
我的问题很简单
例如,我创建了一个向用户发送电子邮件的工作。但是由于某些语法错误或任何其他异常而失败,因此 laravel 将在 failed_jobs 数据库表中将此作业视为失败的作业,稍后,假设 2 天后我在代码中发现了问题我解决了它,现在我想再次重新运行那个失败的工作,以便我的任务可以完成
这样做的方法是什么?
【问题讨论】:
标签: laravel laravel-queue laravel-jobs
您可以使用查看所有失败的作业
php artisan queue:failed
如果你只想重试 1 个作业,你可以使用以下(将 5 替换为你要重试的作业的 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工匠队列:重试所有
【讨论】:
这里值得注意的是,作业在推送到队列时会被序列化。因此,如果语法错误出现在作业代码本身中,那么该作业将始终失败。
这是因为在 failed_jobs 表中输入了相同的作业负载,因此该作业的后续重试将导致相同的错误。
【讨论】:
以防万一您需要在特定队列上重试失败的作业,您可以查看答案here
【讨论】: