我正在用FastAPI集成celery 。我正在使用rabbitmq作为celery 的代理。当我向celery 提交任务时,我得到这个错误:“kombu.异常.操作错误:[Errno 111]连接被拒绝”。我不明白也许是由于与rabbitmq的连接,但当我启动celery 工人,它没有给出任何连接错误,但在任务提交时。以下是我的代码:main.py
from fastapi import FastAPI
from scraper import crawl_data
from task import sample_task
app = FastAPI()
@app.get("/test")
def test():
data = sample_task.delay()
return {'MESSAGE': 'DONE'}
task.py
from celery_config import app
import time
@app.task
def sample_task():
for i in range(1, 10):
time.sleep(10)
print("DONE TASK")
celery _配置.py
from celery import Celery
app = Celery('celery_tutorial',
broker="amqp://guest:guest@localhost:5672//",
include=['task'])
docker-compose.yml
version: "3.9"
services:
main_app:
build:
context: .
dockerfile: fastapi.Dockerfile
command: uvicorn main:app --host 0.0.0.0 --reload
ports:
- "8000:8000"
rabbitmq:
image: rabbitmq:3.8-management-alpine
ports:
- 15673:15672
# celery_worker:
# build:
# context: .
# dockerfile: fastapi.Dockerfile
# command: celery -A celery worker --loglevel=info
# depends_on:
# - rabbitmq
# - main_app
stdin_open: true
我用docker compose启动FastAPI服务器和rabbitmq,用以下命令启动celery worker:
celery -A celery_config worker --loglevel=info
1条答案
按热度按时间f87krz0w1#
假设您的
celery_config.py
在main_app
容器中运行,则代理的主机应该是rabbitmq
(服务名称)而不是localhost:编辑:
您似乎没有设置相关的环境变量:
请确保您添加了它们,请参见我答案here。