Joe*_*Joe 5 django message-queue rabbitmq mongodb celery
我正在尝试使用MongoDB作为Celery的消息队列(在Django应用程序中).Celery(2.2.0rc2)的当前开发版本应该允许你这样做,但我似乎无法让任何工作人员去接受我正在创建的任务.
版本:芹菜v2.2.0rc3
mongodb 1.6.5
pymongo 1.9
django-celery 2.2.0rc2
在我的设置中,我有:
CELERY_RESULT_BACKEND = "mongodb"
CELERY_MONGODB_BACKEND_SETTINGS = {
# Shouldn't need these - defaults are correct.
"host": "localhost",
"port": 27017,
"database": "celery",
"taskmeta_collection": "messages",
}
BROKER_BACKEND = 'mongodb'
BROKER_HOST = "localhost"
BROKER_PORT = 27017
BROKER_USER = ""
BROKER_PASSWORD = ""
BROKER_VHOST = ""
import djcelery
djcelery.setup_loader()
Run Code Online (Sandbox Code Playgroud)
我已经创建了一个测试tasks.py文件,如下所示:
from celery.decorators import task
@task()
def add(x, y):
return x + y
Run Code Online (Sandbox Code Playgroud)
如果我在后台启动芹菜,它似乎正常启动.然后我打开一个python shell并运行以下命令:
>>> from myapp.tasks import add
>>> result = add.delay(5,5)
>>> result
<AsyncResult: 7174368d-288b-4abe-a6d7-aeba987fa886>
>>> result.ready()
False
Run Code Online (Sandbox Code Playgroud)
问题是没有工人接过任务.我错过了一个设置还是什么?如何将芹菜指向消息队列?
请记住,Kombu 仅适用于 mongo 1.3+,因为它需要 findandmodify 功能。如果您使用的是 ubuntu,存储库中的最后一个版本是 1.2,则不起作用。
也许您还必须设置 BROKER_VHOST = "dbname"
如果有效请告诉我
归档时间: |
|
查看次数: |
3043 次 |
最近记录: |