You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

启动rq-worker时遇Error 111连接localhost:6379拒绝的问题怎么解决?

解决RQ Worker无法连接本地Redis的问题

从你提供的信息来看,Redis确实在127.0.0.1:6379正常运行,redis-cli ping返回PONG也验证了这一点,那问题大概率出在RQ Worker的配置或运行环境上,咱们逐个排查:

1. 检查RQ的Redis连接配置

RQ默认会连接localhost:6379,但有时候Flask应用的RQ初始化代码、配置文件或环境变量可能会覆盖默认参数:

  • 先确认你Flask应用里初始化RQ的代码是否正确指向了本地Redis:
    from rq import Queue
    from redis import Redis
    
    # 确保这里的host和port参数是127.0.0.1和6379
    redis_conn = Redis(host='127.0.0.1', port=6379)
    q = Queue(connection=redis_conn)
    
  • 如果用了REDIS_URL环境变量配置,先打印看看是否正确:
    echo $REDIS_URL
    
    如果输出不是redis://127.0.0.1:6379,启动rq worker时可以直接指定正确的连接地址:
    rq worker --url redis://127.0.0.1:6379
    

2. 检查运行用户的权限限制

从ps aux输出看,Redis是以redis用户运行的,而你启动rq worker用的是sib用户。虽然本地连接理论上不受限,但SELinux/AppArmor这类安全模块可能会限制用户访问:

  • 可以临时用redis用户启动worker测试:
    sudo -u redis rq worker
    
    如果能正常连接,说明sib用户有访问限制,需要调整安全模块规则或权限。

3. 确认Redis的监听模式

有些Redis配置会同时开启Unix Socket,而RQ可能默认尝试连接Socket而非TCP端口:

  • 查看redis.conf里的unixsocket配置项,确认Socket路径后,尝试用Socket启动worker:
    rq worker --url unix:///var/run/redis/redis.sock
    
    (替换成你实际的Socket路径)

4. 验证端口监听状态

虽然redis-cli能连接,但还是可以再确认Redis是否真的在监听6379端口:

netstat -tulpn | grep 6379

正常输出应该包含127.0.0.1:6379和redis-server进程。

5. 检查RQ与Redis-Py的版本兼容性

版本不兼容也可能导致连接异常,先查看当前安装的版本:

pip show rq redis

如果版本较旧,建议升级到稳定版:

pip install --upgrade rq redis

我之前遇到过类似问题,就是环境变量里的REDIS_URL被其他服务改成了远程地址,导致RQ Worker一直连错地方,指定--url参数就解决了。你可以先从检查RQ配置和环境变量入手,应该能快速定位问题。

内容的提问来源于stack exchange,提问作者Iraida Mercedes Barreto Díaz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 07:44:19