Laravel Horizon无法执行队列中的任务

发布于 2022-09-13 00:30:40 字数 1954 浏览 23 评论 0

发生的问题


horizon.php

'environments' => [
        'production' => [
            'supervisor-1' => [
                'connection' => 'redis',
                'queue' => ['default'],
                'balance' => 'simple',
                'processes' => 10,
                'tries' => 3,
            ],
        ],

        'local' => [
            'supervisor-1' => [
                'connection' => 'redis',
                'queue' => ['default', 'exports', 'kwm430_exports'],
                'balance' => 'simple',
                'processes' => 3,
                'tries' => 3,
            ],
        ],
    ],

.env

APP_NAME=Laravel
APP_ENV=local
QUEUE_DRIVER=redis
CACHE_DRIVER=redis

REDIS_HOST=xxx.redis.rds.aliyuncs.com
REDIS_PASSWORD=xxx
REDIS_PORT=6379
REDIS_SCHEME=tls
REDIS_VERIFY_SERVER_CERT=true

controller

(new AccountExport($account_bank_id, $month, $date->month, $task['id'], $filenDownloadUrl))->queue($filenDownloadUrl, 'public')->allOnQueue('kwm430_exports');

$data = (new JsonResponse(true,[],'成功添加到下载队列,请一小时后到下载列表查看'))->toArray();
return Response()->json($data);

redis用的是阿里的rds,存储什么的都是正常,QUEUE_DRIVER和CACHE_DRIVER也都是用的redis,就是不知道为什么会不执行任务

我去查过,有一篇文章和我的问题是一样的线上环境使用 horizon,不执行任务?,但是文章的回答的说法,proc_open函数也解除禁用了,还是一样不行,horizon.php的environments也是按照.env的APP_ENV去配置的,有大神知道什么原因导致的吗

更新补充说明
我也是本地可以,部署到线上不行
执行下面的命令,也是没有任何输出

sudo /apps/svr/php/bin/php artisan queue:work --queue=kwm430_exports --tries=3

然后我查看服务器进程,的确是有这条进程

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

提赋 2022-09-20 00:30:40

找到解决方案了,因为redis使用的是阿里的集群部署,然后没有配置reids的前缀导致key插入到了不同的slot上导致的。解决方案为config/database.php中增加options, 并配置一个前缀即可。
参考链接:Laravel 使用Predis 报 ERR 'EVAL' command keys must in same slot 错误

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文