我尝试在FastAPI项目中实现Celery,使用Redis作为代理和后端结果。我成功地构建了应用程序dockercompose。但是当我发送请求时,它引发了Error -3 connecting to redis:6379. Temporary failure in name resolution
。以下是我的docker-compose.yaml文件内容。我错过了什么?
顺便问一下,Redis网址末尾的/0
是什么?
version: '3.5'
services:
soar-core:
container_name: soar-core
build: .
stdin_open: true
tty: true
restart: on-failure
ports:
- 127.0.0.1:8000:8000
depends_on:
- mongo
- redis
volumes:
- .:/soar_core
networks:
- soar-network
mongo:
container_name: mongo
image: mongo
restart: always
ports:
- 127.0.0.1:27018:27017
volumes:
- ./data:/data/db
networks:
- soar-network
redis:
image: redis:7.0.5
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
dashboard:
build: .
command: pipenv run --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:
driver: bridge
下面是我如何配置celery 。
from celery import Celery
app = Celery(
name="Celery-App",
broker="redis://redis:6379/0",
backend="redis://redis:6379/0",
)
1条答案
按热度按时间ee7vknir1#
您的两个服务有一个自定义的
networks: [soar-network]
块,但其余的没有。组合automatically将这些服务放在它创建的default
网络上。使用
default
网络没有什么错,我建议删除文件中的所有networks:
块,以便每个容器都在该default
网络上。(The
redis://.../0
指定了数据库的编号,一个Redis服务器可以有多个密钥空间,但它们是用数字而不是名称来标识的。