【问题标题】:Laravel & Redis - job killed after 10 minutes despite timeout set to 1800sLaravel 和 Redis - 尽管超时设置为 1800 秒,但作业在 10 分钟后被终止
【发布时间】:2019-05-03 06:18:39
【问题描述】:

我在我的 laravel 应用程序上使用多个 redis 队列来管理重复发生的任务。

除了推送到队列中的作业通常运行时间超过 10 分钟(大约 9-15 分钟)之外,一切正常。

在 Laravel forge 上,我在一个超时 1800 的 redis 队列上创建了一个新工作人员,但运行时间超过 10 分钟的作业仍然被终止。不到 10 分钟的作业按预期工作。

有没有我遗漏的配置?

【问题讨论】:

    标签: laravel redis


    【解决方案1】:

    您应该在 config/queue.php 中将 retry_after 值设置为 1800。

    您可以创建多个使用相同连接的 redis 队列,并将您的作业分派到指定的队列上。

    queue.php:

    'redis' => [
        'connection' => env('QUEUE_REDIS_CONNECTION'),
        'driver' => 'redis',
        'queue'  => 'default',
        'retry_after => 60
    ],
    'redis_low' => [
        'connection' => env('QUEUE_REDIS_CONNECTION'),
        'driver' => 'redis',
        'queue'  => 'email',
        'retry_after => 1800
    ]
    

    在你的工作中:

    Job::dispatch()->onQueue('email');
    

    【讨论】:

    • 是否可以分别为每个队列执行此操作?我不希望其他队列在这么长时间后重试失败的作业。提前致谢!
    • 更新答案。
    猜你喜欢
    • 2013-06-05
    • 2012-05-21
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 2012-10-03
    • 2018-10-24
    相关资源
    最近更新 更多