我无法运行芹菜工人 + docker + django。我下载了图像兔子和链接的工作线程,在运行时出现错误:无法连接到 amqp://guest:**@127.0.0.1:5672//:[Errno 111] 连接被拒绝。 worker_1。姜戈:1.11,卡拉:4.1.0。做错了什么?
码头工人撰写
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
卡勒里
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')
celery.sh
#!/bin/bash
cd app
celery -A app worker -l info
错误是由 的主机无效引起的CELERY_BROKER_URL
。 根据您提供的错误,您的代理 url 中的主机似乎127.0.0.1
,因为您使用的是 docker,除非您提供主机的公共 IP,否则这将不起作用。您需要更新CELERY_BROKER_URL
中的主机,以使用撰写文件中的服务名称。 在您的情况下,它是rabbit
. 如下所示的内容应该有效:
CELERY_BROKER_URL = 'amqp://guest:guest@rabbit:5672/%2F'
更改用户和密码以及其他详细信息。
如果您无法使用 guest:guest 访问,请将您自己的用户添加到系统中。本文档可以帮助您在 RabbitMQ 服务器中设置自己的用户、密码和虚拟主机。
http://docs.celeryproject.org/en/latest/getting-started/brokers/rabbitmq.html#broker-rabbitmq