FastAPI集成Celery遇Redis域名解析错误及URL后缀疑问
问题解决:Redis域名解析失败与URL末尾
/0的含义 一、Redis域名解析失败的原因及修复
你的docker-compose.yaml存在网络配置遗漏:redis、worker、dashboard服务未加入自定义的soar-network网络。Docker容器只有在同一网络内才能通过服务名(如redis)互相访问,跨网络容器无法解析对方服务名,这就是触发Temporary failure in name resolution错误的核心原因。
修复需给这三个服务添加网络配置:
- 补全
redis服务的网络配置:
redis: image: redis:7.0.5 networks: - soar-network
- 补全
worker服务的网络配置:
worker: build: . command: pipenv run celery --app=soar_core.celery.app worker --loglevel=info volumes: - .:/soar_core environment: - CELERY_BROKER_URL=redis://redis:6379/0 - CELERY_RESULT_BACKEND=redis://redis:6379/0 depends_on: - soar-core - redis networks: - soar-network
- 补全
dashboard服务的网络配置,同时修正command中的语法错误(移除多余的--):
dashboard: build: . command: pipenv run celery --app=soar_core.celery.app flower --port=5555 --broker=redis://redis:6379/0 ports: - 5556:5555 environment: - CELERY_BROKER_URL=redis://redis:6379/0 - CELERY_RESULT_BACKEND=redis://redis:6379/0 depends_on: - soar-core - redis - worker networks: - soar-network
二、Redis URL末尾/0的含义
Redis默认内置16个逻辑隔离的数据库,编号从0到15。URL末尾的/0表示使用编号为0的数据库:
- 不同数据库的key互相独立,不会产生干扰,适合在同一Redis实例中隔离不同应用或模块的数据。
- 如果不指定数据库编号,Redis默认使用第0号数据库。
内容的提问来源于stack exchange,提问作者Muzaffer
相关产品推荐
相关产品推荐

