芹菜不起作用:无法连接到 amqp://guest:**@127.0.0.1:5672//

Posted

技术标签:

【中文标题】芹菜不起作用:无法连接到 amqp://guest:**@127.0.0.1:5672//【英文标题】:Celery not work: Cannot connect to amqp://guest:**@127.0.0.1:5672// 【发布时间】:2018-10-17 18:25:29 【问题描述】:

我无法运行 celery worker + docker + django。我下载图像 rabbit 和linked worker,运行时出现错误:无法连接到 amqp://guest:**@127.0.0.1:5672//: [Errno 111] 连接被拒绝。 工人_1。 Django: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 实例?类似celery -A my_project worker -l info? 是的,好吧,这个命令写在calery.sh中 能显示calery.sh的内容吗?以及CELERY_BROKER_URL的值? 我添加了更高的 celery.sh 并且没有定义 CELERY_BROKER_URL。我看不到这一点:docs.celeryproject.org/en/latest/django/… @SergBombermen 那是因为它有一个默认值并且您正在使用它,您可以查看他们的sample project进行配置。 【参考方案1】:

错误是由CELERY_BROKER_URL 的无效主机引起的。根据您提供的错误,您的代理 url 中的主机似乎是 127.0.0.1,因为您使用的是 docker,除非您提供主机的公共 IP,否则这将不起作用。您需要更新 CELERY_BROKER_URL 中的主机以使用撰写文件中的服务名称。在您的情况下,它是rabbit。像下面这样的东西应该可以工作:

CELERY_BROKER_URL = 'amqp://guest:guest@rabbit:5672/%2F'

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

【讨论】:

@SergBombermen 你能把它改成包含用户名和密码吗? amqp://guest:guest@rabbit:5672/%2F 之类的东西?【参考方案2】:

如果您无法使用 guest:guest 访问,请将您自己的用户添加到系统中。该文档可以帮助您在 RabbitMQ 服务器中设置自己的用户、密码和虚拟主机。

http://docs.celeryproject.org/en/latest/getting-started/brokers/rabbitmq.html#broker-rabbitmq

【讨论】:

以上是关于芹菜不起作用:无法连接到 amqp://guest:**@127.0.0.1:5672//的主要内容,如果未能解决你的问题,请参考以下文章

无法连接到 amqp://guest:**@127.0.0.1:5672//: [Errno 111] 连接被拒绝

celery + redis 无法连接到 amqp://guest:**@127.0.0.1:5672//: [Errno 111] 连接被拒绝

Flask + Celery + Redis:消费者:无法连接到 amqp://guest:**@127.0.0.1:5672//:超时

创建第一个 Celery 任务 - Django。错误 - “错误/MainProcess] 消费者:无法连接到 amqp://guest:**@127.0.0.1:5672//:”

芹菜的不规则行为

芹菜工人无法连接到 docker 实例上的 redis