【发布时间】:2021-11-09 15:19:23
【问题描述】:
所以我正在使用 FastAPI 构建一个 webapp。我使用 Celery 来运行一些后台任务。 我的代码在我的本地开发机器上运行良好,但是当我尝试对其进行 docker 化时,似乎运行在容器上的 FastAPI 应用程序无法与 celery 同步。例如我有 4 个容器:
如果我在我的计算机上本地启动 webapp,并且不启动 padel-checker-web-1 容器而只使用其他 3 个容器,则 docker 上的 celery 会与它同步并正常工作。
我的问题是 webapp 在 docker 中运行并使用 celery,它们只是不同步。
我正在粘贴我的 docker-compose.yml 以查看是否有人可以为我指明正确的方向:
version: '3.9'
services:
web: &app
build: ./
command: pipenv run python -m app.main
networks:
- backend-tier
ports:
- "8000:8000"
depends_on:
- worker
rabbitmq:
image: rabbitmq:3.9-management
environment:
- RABBITMQ_DEFAULT_USER=andre
- RABBITMQ_DEFAULT_PASS=secret
networks:
- backend-tier
volumes:
- ./config/rabbitmq/rabbit.conf:/etc/rabbit/rabbit.conf
ports:
# The rabbitMQ management plugin - running on http://localhost:15672
- "15672:15672"
- "5672:5672"
worker:
<<: *app
environment:
CELERY_BROKER_URL: "amqp://andre:secret@rabbitmq/"
ports: []
command: ['pipenv', 'run', 'celery', '-A', 'app.feed.celery_worker.celery', 'worker', '-l', 'INFO']
depends_on:
- rabbitmq
networks:
- backend-tier
flower:
<<: *app
environment:
CELERY_BROKER_URL: "amqp://andre:secret@rabbitmq/"
networks:
- backend-tier
ports:
- "5555:5555"
depends_on:
- rabbitmq
- worker
command: ['pipenv', 'run', 'celery', 'flower']
networks:
backend-tier:
driver: bridge
如果我尝试使用容器,调用任何 task.delay() 都会挂起。
【问题讨论】: