【发布时间】:2021-02-19 12:27:55
【问题描述】:
我正在创建一个basic project 来测试 Flask + Celery + RabbitMQ + Docker。
由于某种原因,我不知道,当我调用 celery 时,任务似乎调用了 RabbitMQ,但它始终处于 PENDING 状态,它永远不会更改为另一个状态。我尝试使用task.get(),但代码冻结。示例:
芹菜工人(例如worker_a.py)是这样的:
from celery import Celery
# Initialize Celery
celery = Celery('worker_a',
broker='amqp://guest:guest@tfcd_rabbit:5672//',
backend='rpc://')
[...]
@celery.task()
def add_nums(a, b):
return a + b
虽然docker-compose.yml 是这样的:
[...]
tfcd_rabbit:
container_name: tfcd_rabbit
hostname: tfcd_rabbit
image: rabbitmq:3.8.11-management
environment:
- RABBITMQ_ERLANG_COOKIE=test
- RABBITMQ_DEFAULT_USER=guest
- RABBITMQ_DEFAULT_PASS=guest
ports:
- 5672:5672
- 15672:15672
networks:
- tfcd
tfcd_worker_a:
container_name: tfcd_worker_a
hostname: tfcd_worker_1
image: test_flask_celery_docker
entrypoint: celery
command: -A worker_a worker -l INFO -Q worker_a
volumes:
- .:/app
links:
- tfcd_rabbit
depends_on:
- tfcd_rabbit
networks:
- tfcd
[...]
可以在here找到包含所有文件和运行说明的存储库。
有人知道会发生什么吗?
提前谢谢你。
【问题讨论】:
标签: python docker rabbitmq celery