Celery连接Redis失败求助:无法连接redis://redis:6379/0
解决Celery连接Redis主机名解析错误的方案
核心问题分析
你的配置里broker用了redis://redis:6379/0,但本地系统无法将redis这个主机名解析到运行Redis的IP地址(你本地Redis实际在127.0.0.1/localhost),这是导致连接失败的直接原因。
具体解决方法
方法一:统一使用本地可解析的Redis地址
修改tasks.py中的Celery配置,将broker和result_backend都设置为本地Redis的地址:
# tasks.py中的配置部分 app = Celery('tasks', broker='redis://127.0.0.1:6379/0', result_backend='redis://127.0.0.1:6379/0')
也可以用localhost替代127.0.0.1,因为你已经验证过redis-cli能连接这个地址。修改完成后重新启动Celery worker即可。
方法二:配置本地hosts映射(保留redis主机名)
如果坚持要使用redis作为主机名,需要在本地hosts文件中添加映射规则:
- Linux/macOS:编辑
/etc/hosts文件,添加一行:127.0.0.1 redis - Windows:打开
C:\Windows\System32\drivers\etc\hosts文件(需管理员权限),添加同样内容。
添加完成后,先执行ping redis验证主机名是否能解析到127.0.0.1,再重启Celery worker。
验证步骤
- 修改配置或hosts后,执行
redis-cli -h redis ping,返回PONG说明主机名解析正常。 - 重新启动Celery worker:
celery -A tasks worker --loglevel=INFO --concurrency=5,此时应能正常连接Redis。
内容的提问来源于stack exchange,提问作者whitebear
相关产品推荐
相关产品推荐

