我正在尝试设置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()
答案 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]"