Celery with RabbitMQ:AttributeError:'DisabledBackend'对象没有属性'_get_task_meta_for'

我正在运行芹菜教程的第一步 。

我们定义以下任务:

from celery import Celery app = Celery('tasks', broker='amqp://guest@localhost//') @app.task def add(x, y): return x + y 

然后调用它:

 >>> from tasks import add >>> add.delay(4, 4) 

但是我得到以下错误:

 AttributeError: 'DisabledBackend' object has no attribute '_get_task_meta_for' 

我正在运行芹菜工和rabbit-mq服务器。 奇怪的是,芹菜工作者报告这个任务是成功的:

 [2014-04-22 19:12:03,608: INFO/MainProcess] Task test_celery.add[168c7d96-e41a-41c9-80f5-50b24dcaff73] succeeded in 0.000435483998444s: 19 

为什么这不起作用?

只要继续阅读教程。 这将在“ 保持结果”章节中解释。

要启动Celery,您需要提供broker参数,这是发送有关任务的消息所必需的。 如果你想检索完成的任务返回的状态和结果的信息,你需要设置后端参数。 您可以在configuration文档中find包含说明的完整列表:CELERY_RESULT_BACKEND 。

我build议看一下: http : //www.cnblogs.com/fangwenyu/p/3625830.html

在那里你会看到,而不是

 app = Celery('tasks', broker='amqp://guest@localhost//') 

你应该写作

 app = Celery('tasks', backend='amqp', broker='amqp://guest@localhost//') 

就是这个。

万一有人犯了同样的错误,我也是这么做的:教程中没有这么明确地expression,只是行

 app = Celery('tasks', backend='rpc://', broker='amqp://') 

是你的tasks.py文件中的一行的编辑。 我现在写道:

 app = Celery('tasks', backend='rpc://', broker='amqp://guest@localhost//') 

当我从命令行运行python时,我得到:

 $ python >>> from tasks import add >>> result = add.delay(4,50) >>> result.ready() >>> False 

所有教程应该很容易遵循,即使有点醉了。 到目前为止,这个并没有达到那个标准。

在你的项目目录下find设置文件。

那么:sudo vim settings.py复制/粘贴到settings.py中:CELERY_RESULT_BACKEND ='djcelery.backends.database:DatabaseBackend'

注意:这是如果您使用django-celery作为将消息存储在队列中的后端。