Django Celery - 无法连接到amqp://guest@127.0.0.8000:5672 //

时间:2013-08-08 18:20:28

标签: python django celery

我正在尝试设置Django-Celery。我正在阅读教程

http://docs.celeryproject.org/en/latest/django/first-steps-with-django.html

我跑的时候     $ python manage.py芹菜工人--loglevel = info

我得到了

[Tasks]


/Users/msmith/Documents/dj/venv/lib/python2.7/site-packages/djcelery/loaders.py:133:     UserWarning: Using settings.DEBUG leads to a memory leak, never use this setting in     production environments!
warnings.warn('Using settings.DEBUG leads to a memory leak, never '

[2013-08-08 11:15:25,368: WARNING/MainProcess] /Users/msmith/Documents/dj/venv/lib/python2.7/site-packages/djcelery/loaders.py:133: UserWarning: Using settings.DEBUG leads to a memory leak, never use this setting in production environments!
warnings.warn('Using settings.DEBUG leads to a memory leak, never '

[2013-08-08 11:15:25,369: WARNING/MainProcess] celery@sfo-mpmgr ready.
[2013-08-08 11:15:25,382: ERROR/MainProcess] consumer: Cannot connect to     amqp://guest@127.0.0.1:5672/celeryvhost: [Errno 61] Connection refused.
Trying again in 2.00 seconds...

以前有人遇到过这个问题吗?

settings.py

# Django settings for summertime project.
import djcelery
djcelery.setup_loader()

BROKER_URL = 'amqp://guest:guest@localhost:5672/'

...

INSTALLED_APPS = {
    ...
    'djcelery',
    'celerytest'
}

wsgi.py

import djcelery
djcelery.setup_loader()

8 个答案:

答案 0 :(得分:22)

问题是您正在尝试连接到RabbitMQ的本地实例。请查看settings.py

中的这一行
  

BROKER_URL ='amqp:// guest:guest @ localhost:5672 /'

如果您目前正在开发中,那么您可以避免设置Rabbit及其周围的所有混乱,只需使用Django数据库的开发版本的Message Queue。

通过用

替换以前的配置来完成此操作
  

BROKER_URL ='django://'   并添加此应用程序:

     

INSTALLED_APPS + =('kombu.transport.django',)

最后,使用

启动工作人员
  

./ manage.py芹菜工人--loglevel = info

来源:http://docs.celeryproject.org/en/latest/getting-started/brokers/django.html

答案 1 :(得分:13)

我收到此错误是因为rabbitmq未启动。如果您通过brew安装rabbitmq,则可以使用brew services start rabbitmq

启动它

答案 2 :(得分:3)

您可以将这些行添加到 settings.py 中:

CELERY_BROKER_URL = 'redis://localhost:6379'
CELERY_RESULT_BACKEND = 'redis://localhost:6379'

然后运行:

celery -A yourProjectName worker -l info

答案 3 :(得分:2)

如果您正在处理生产环境,

您必须先安装并设置rabbitmq服务器。您可以参考rabbitmq网站了解安装步骤。

在设置中你必须写下这一行:

CELERY_RESULT_BACKEND='djcelery.backends.database:DatabaseBackend',
BROKER_URL = 'amqp://guest:guest@localhost:5672//'

在完成rabitmq服务器的所有设置之后,你必须运行这两个命令,

export C_FORCE_ROOT='true'
celery -A transcoder(name of app) worker --loglevel=info

答案 4 :(得分:0)

如果以上所有解决方案都不起作用,您可以尝试以下方法: turn off your network connection (wifi or wire)

这很奇怪,但有时对我有用!

似乎与本地网络设备有关,而不是与 RabbitMQ 服务有关。

我的屏幕录制:https://drive.google.com/file/d/13t35Lzh3JLsCbGjRag0uiDhcYz1JuHq7/view?usp=sharing

答案 5 :(得分:0)

确保你在全局运行兔子服务器,在我的情况下,这就是问题所在。

答案 6 :(得分:0)

此错误表示 celery 后端设置不正确,因此无法连接到后端。

如果您刚刚开始教程 celery with django 。您可以尝试以下设置。

CELERY_BROKER_URL = 'amqp://guest:guest@localhost:5672//'
CELERY_RESULT_BACKEND = 'db+sqlite:///results.db'

答案 7 :(得分:0)

当您通过 pip 安装 Celery 时,您应该选择要使用的版本,例如 redis、rabbitmq、django 等。

如文档中所述:https://pypi.org/project/celery/

<块引用>

捆绑包 Celery 还定义了一组包,可用于安装 Celery 和给定功能的依赖项。

您可以使用方括号在您的需求或 pip 命令行中指定这些。可以通过逗号分隔来指定多个包。

示例:

$ pip install "celery[librabbitmq]"

$ pip install "celery[librabbitmq,redis,auth,msgpack]"