【发布时间】:2014-12-24 19:09:09
【问题描述】:
我在 rabbitmq-server 上执行 celery 时遇到问题。我搜索并找到了a link,但这对我没有帮助。 我的环境是 ubuntu 14.04、python 2.7.6、celery 3.1.15、Django 1.7。 参考a link,我在本地安装了rabbitmq-server。我在 rabbitmq-server 中添加了用户、vhost 并设置了权限。
$ sudo rabbitmqctl add_user tonyg password
$ sudo rabbitmqctl add_vhost vir_host
$ sudo rabbitmqctl set_permissions -p vir_host tonyg ".*" ".*" ".*"
我的 celery 在 django 中的设置如下。
BROKER_URL = 'amqp://tonyg:password@localhost:5672//vir_host'
CELERY_RESULT_BACKEND = 'amqp://tonyg:password@localhost:5672//vir_host'
CELERY_ACCEPT_CONTENT = [u'application/x-python-serialize', u'image/jpeg', u'image/bmp', u'image/png', u'image/tiff']
CELERY_TIMEZONE = 'Asia/Tokyo'
CELERY_ENABLE_UTC = True
CELERY_IGNORE_RESULT = False
除了默认配置,我没有设置任何关于 rabbitmq-server 的内容。
我是这样切芹菜的。
$ celery -A MyProj worker -l info
-------------- celery@ip-172-31-3-10 v3.1.15 (Cipater)
---- **** -----
--- * *** * -- Linux-3.13.0-36-generic-x86_64-with-Ubuntu-14.04-trusty
-- * - **** ---
- ** ---------- [config]
- ** ---------- .> app: MyProj:0x7f7453328b10
- ** ---------- .> transport: amqp://tonyg:**@localhost:5672//vir_host
- ** ---------- .> results: amqp://tonyg:password@localhost:5672//vir_host
- *** --- * --- .> concurrency: 1 (prefork)
-- ******* ----
--- ***** ----- [queues]
-------------- .> celery exchange=celery(direct) key=celery
[tasks]
. MyProj.tasks. ......
. MyProj.tasks. ......
[2014-10-29 15:07:50,241: ERROR/MainProcess] consumer: Cannot connect to amqp://tonyg:**@127.0.0.1:5672//vir_host: [Errno 104] Connection reset by peer.
Trying again in 2.00 seconds...
[2014-10-29 15:07:55,251: ERROR/MainProcess] consumer: Cannot connect to amqp://tonyg:**@127.0.0.1:5672//vir_host: [Errno 104] Connection reset by peer.
Trying again in 4.00 seconds...
当我使用默认访客标识符设置 celery 时,
BROKER_URL = 'amqp://guest:guest@localhost:5672//'
CELERY_RESULT_BACKEND = 'amqp://guest:guest@localhost:5672//'
它运行良好。我不知道为什么。有人可以帮我吗?谢谢。
【问题讨论】: