安装
我正在使用 django(1.4) celery(3.0.13) 和 RabbitMQ(v3.0.4),后端数据库是 sqlite。
芹菜是由pip install django-celery
环境
在setting.py中:
# For django-celery
import djcelery
djcelery.setup_loader()
BROKER_URL = 'amqp://user:pwd@sd5:5672/8086'
### and adding 'djcelery' to INSTALLED_APPS
跑步
设置数据库后south
,我启动 rabbitmq-server 并manage.py celery worker --loglevel=debug
我可以看到连接已建立:
-------------- celery@sd5 v3.0.16 (Chiastic Slide)
---- **** -----
--- * *** * -- [Configuration]
-- * - **** --- . broker: amqp://utils@sd5:5672/8086
- ** ---------- . app: default:0x8a5106c (djcelery.loaders.DjangoLoader)
- ** ---------- . concurrency: 2 (processes)
- ** ---------- . events: OFF (enable -E to monitor this worker)
- ** ----------
- *** --- * --- [Queues]
-- ******* ---- . celery: exchange:celery(direct) binding:celery
--- ***** -----
[Tasks]
. celery.backend_cleanup
. celery.chain
. celery.chord
. celery.chord_unlock
. celery.chunks
. celery.group
. celery.map
. celery.starmap
. utils.weixin.tasks.celery_add
[2013-03-19 19:50:00,460: WARNING/MainProcess] celery@sd5 ready.
[2013-03-19 19:50:00,483: INFO/MainProcess] consumer: Connected to amqp://utils@sd5:5672/8086.
[2013-03-19 19:50:00,498: DEBUG/MainProcess] consumer: Ready to accept tasks!
在 rabbit@sd5.log 中:
=INFO REPORT==== 19-Mar-2013::19:50:00 ===
accepting AMQP connection <0.1655.0> (127.0.0.1:50087 -> 127.0.0.1:5672)
问题
然后我运行我的utils.weixin.tasks.celery_add
任务manage.py shell
:
>>> from utils.weixin.tasks import celery_add
>>> result = celery_add.delay(1,3)
>>> result.ready()
False
>>> result.get()
永远挂在这里...
而且,芹菜工人的日志和rabbitmq的日志中没有任何内容,没有任何“收到的任务”等。
似乎调用任务并没有与工人沟通。
问题
我应该怎么做才能找出做错了什么。我应该如何解决这个问题?
赞赏!