【问题标题】:Laravel 5.1 Queue - How to avoid Queue:work command to fetch the in progress jobLaravel 5.1 Queue - 如何避免使用 Queue:work 命令来获取正在进行的作业
【发布时间】:2016-11-14 16:05:39
【问题描述】:

1 队列与数据库驱动器。我的队列:工作命令每分钟运行一次。

我想执行该作业最多 2 次尝试,它正在工作。但问题是我的 Queue:work cron 每分钟都会运行一次,即使之前的作业正在进行中,它也会尝试相同的作业。

如何避免使用 queue:work 命令来运行正在进行的作业。

谢谢

【问题讨论】:

    标签: laravel laravel-5 queue


    【解决方案1】:

    queue:work 不会尝试执行已在执行的作业,因为它在进程开始时获得保留标志。您可能会遇到这样一个事实,即您的工作在下一次 Cron 执行之前失败了,所以它只是永远地再次尝试相同的工作。

    您可以在每次调用queue:work 时使用--tries 来限制作业的尝试次数。因此,如果您运行 php artisan queue:work --tries=2,该作业将尝试执行 3 次,如果 3 次全部失败,则将其添加到 failed_jobs 表中。

    确保您已使用php artisan queue:failed-table 准备好您的环境(数据库迁移)。

    【讨论】:

    • 嗨,Marco,感谢您的回复,但我已经调试了日志。 Queue:work 执行一个作业,即使它在 reserved 中。可能是我做错了什么。我每分钟从 schedular 运行 queue:work 命令,并为 schedule:run 添加 cron 。 queue:list 工作正常。谢谢。
    猜你喜欢
    • 2021-03-25
    • 2015-11-14
    • 2015-08-26
    • 2019-02-28
    • 2015-10-03
    • 2010-11-22
    • 1970-01-01
    • 2017-09-07
    • 2021-04-14
    相关资源
    最近更新 更多