Laravel Horizon无法执行队列中的任务
发生的问题
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
找到解决方案了,因为redis使用的是阿里的集群部署,然后没有配置reids的前缀导致key插入到了不同的slot上导致的。解决方案为config/database.php中增加options, 并配置一个前缀即可。
参考链接:Laravel 使用Predis 报 ERR 'EVAL' command keys must in same slot 错误