我的系统中安装了 celery==3.0.12 和 djcelery==3.0.11,django 版本为 1.4.1。我试图在我的一个项目中使用 celery 异步处理一些任务,但它不起作用。因此,为了进行测试,我开始了一个新的 django 项目,定义了示例任务add
并像这样从 shell 调用它
>>>res = add.delay(3, 5)
我试过了res.status
,res.get()
而且res.ready()
,所有这些都被阻止了。我正在celery
使用 rabbitmq 管理插件在浏览器中监视 rabbitmq 队列。celery
队列处于空闲状态,没有收到任何消息。
以下是目录树。
|-- manage.py
|-- new_app
| |-- __init__.py
| |-- __init__.pyc
| |-- models.py
| |-- models.pyc
| |-- tasks.py
| |-- tasks.pyc
| |-- tests.py
| `-- views.py
`-- testapp
|-- __init__.py
|-- __init__.pyc
|-- settings.py
|-- settings.pyc
|-- urls.py
`-- wsgi.py
以下是文件内容
new_app/tasks.py
from celery import task
@task
def add(x ,y):
return x + y
testapp/settings.py
import djcelery
djcelery.setup_loader()
BROKER_URL = 'amqp://'
CELERY_RESULT_BACKEND = 'amqp://'
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
BROKER_HOST = 'localhost'
BROKER_PORT = 5672
BROKER_USER = 'guest'
BROKER_PASSWORD = 'guest'
BROKER_VHOST = '/'
当我运行时python manage.py celeryd -l INFO
,它正在创建celery
队列。以下是控制台输出。
http://dpaste.com/841960/
RabbitMQ 版本为 3.0.0
的输出rabbitmqctl list_queues
Listing queues ...
celery 0
h4ckb0x.celery.pidbox 0
...done.