【问题标题】:How to retry all failed jobs from Redis queue in Laravel Horizon如何从 Laravel Horizo​​n 中的 Redis 队列重试所有失败的作业
【发布时间】:2019-08-20 18:45:57
【问题描述】:

如何在 Laravel Horizo​​n 中重试 所有 失败的作业?似乎没有“全部重试”按钮,并且由于失败的作业未存储在表中,因此 artisan 命令不起作用。

【问题讨论】:

    标签: php laravel laravel-5 laravel-5.8 laravel-horizon


    【解决方案1】:

    queue:retry 命令接受 all 代替单个作业 ID:

    php artisan queue:retry all
    

    这会将所有失败的作业推回您的 redis 队列以重试:

    The failed job [44] has been pushed back onto the queue!
    The failed job [43] has been pushed back onto the queue!
    ...
    

    如果您没有根据安装指南创建失败日志表:

    php artisan queue:failed-table
    php artisan migrate
    

    那么你可能会上一条小河。也许尝试手动与 redis 交互并尝试直接访问失败的作业列表(假设失败的作业条目没有被擦除 - 看起来他们默认在 redis 中保留一周,基于config/horizon.php 中的配置设置) .

    【讨论】:

      【解决方案2】:

      因为失败的作业没有存储在表中

      实际上,您应该创建该表。来自Laravel Horizon documentation

      您还应该创建 Laravel 将使用的 failed_jobs 表 存储任何失败的队列作业:

      php artisan queue:failed-table
      
      php artisan migrate
      

      然后,到retry failed jobs

      重试失败的作业

      查看已插入您的所有失败作业 failed_jobs 数据库表,你可以使用queue:failed Artisan 命令:

      php artisan queue:failed
      

      queue:failed 命令将列出作业 ID、连接、队列、 和失败时间。作业 ID 可用于重试失败的作业。为了 例如,要重试 ID 为 5 的失败作业,请发出 以下命令:

      php artisan queue:retry 5
      

      【讨论】:

      • 在当前情况下这对我没有帮助,因为我的失败队列位于 Redis 中,而这些作业需要重试。
      猜你喜欢
      • 1970-01-01
      • 2015-08-27
      • 2014-11-19
      • 1970-01-01
      • 2020-11-17
      • 1970-01-01
      • 2021-01-05
      • 2020-11-04
      • 1970-01-01
      相关资源
      最近更新 更多