Celery 不工作:无法连接到 amqp://guest:**@127.0.0.1:5672//

Ser*_*men 7 python django celery

我无法运行 celery worker + docker + django。我下载了 image rabbit 和链接的 worker,在运行时出现错误:无法连接到 amqp://guest:**@127.0.0.1:5672//: [Errno 111] 连接被拒绝。工人_1。Django:1.11,卡路里:4.1.0。做错了什么?

docker-compose

rabbit:
  image: rabbitmq:latest
  ports:
    - "5672:5672"

worker:
  build: ./project
  volumes:
    - ./main:/src/app
  depends_on:
    - rabbit
  links:
    - web #django project
  entrypoint: /src/app/calery.sh
Run Code Online (Sandbox Code Playgroud)

卡莱里

from __future__ import absolute_import, unicode_literals
import os
from celery import Celery

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'app.settings')

app = Celery('app')

app.config_from_object('django.conf:settings', namespace='APP')

app.autodiscover_tasks()

@app.task(bind=True)
def add():
   print('Task')
Run Code Online (Sandbox Code Playgroud)

芹菜.sh

#!/bin/bash

cd app
celery -A app worker -l info
Run Code Online (Sandbox Code Playgroud)

Rie*_*uid 6

该错误是由无效主机引起的CELERY_BROKER_URL。根据您提供的错误,您的代理网址中的主机似乎是127.0.0.1,因为您使用的是 docker,所以除非您提供主机的公共 IP,否则这将不起作用。您需要更新主机中的主机CELERY_BROKER_URL才能使用撰写文件中的服务名称。就你而言,是的rabbit。像下面这样的东西应该有效:

CELERY_BROKER_URL = 'amqp://guest:guest@rabbit:5672/%2F'
Run Code Online (Sandbox Code Playgroud)

更改用户和密码以及其他详细信息。