Laravel 和 Redis - 尽管超时设置为 1800 秒,但 10 分钟后作业被终止

标签 laravel redis

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

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

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

是否缺少任何配置?

最佳答案

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

您可以创建多个使用相同连接的 Redis 队列,并在指定的队列上调度您的作业。

队列.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');

关于Laravel 和 Redis - 尽管超时设置为 1800 秒,但 10 分钟后作业被终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53568610/

相关文章:

php - 如何在 mysql (laravel) 中使 varchar 可以为空且唯一

mysql - 使用 laravel 将 PDF 上传到服务器而不是存储在本地

database - Laravel 使用数据库 : where does it need to be placed? 在模型中还是在 Controller 中?

javascript - 如何将一些 HTML 中的 Vue 组件添加到另一个 Vue 组件?

spring-boot - Redis异常: Cannot determine a node to read

sorting - 在 Redis 中缓存可排序/可过滤的数据

php - Laravel 5.2 中的 API 限制

redis - 如何在redis中存储排序的对象集?

node.js - 如何在 phantomjs 脚本中使用 "node_redis"?

python - 将数据从 redis 哈希转储到 postgresql 表的更快方法