【发布时间】:2016-11-14 16:05:39
【问题描述】:
1 队列与数据库驱动器。我的队列:工作命令每分钟运行一次。
我想执行该作业最多 2 次尝试,它正在工作。但问题是我的 Queue:work cron 每分钟都会运行一次,即使之前的作业正在进行中,它也会尝试相同的作业。
如何避免使用 queue:work 命令来运行正在进行的作业。
谢谢
【问题讨论】:
1 队列与数据库驱动器。我的队列:工作命令每分钟运行一次。
我想执行该作业最多 2 次尝试,它正在工作。但问题是我的 Queue:work cron 每分钟都会运行一次,即使之前的作业正在进行中,它也会尝试相同的作业。
如何避免使用 queue:work 命令来运行正在进行的作业。
谢谢
【问题讨论】:
queue:work 不会尝试执行已在执行的作业,因为它在进程开始时获得保留标志。您可能会遇到这样一个事实,即您的工作在下一次 Cron 执行之前失败了,所以它只是永远地再次尝试相同的工作。
您可以在每次调用queue:work 时使用--tries 来限制作业的尝试次数。因此,如果您运行 php artisan queue:work --tries=2,该作业将尝试执行 3 次,如果 3 次全部失败,则将其添加到 failed_jobs 表中。
确保您已使用php artisan queue:failed-table 准备好您的环境(数据库迁移)。
【讨论】: