我試圖使用MongoDB作爲Celery的消息隊列(在Django應用程序中)。 Celery(2.2.0rc2)的當前開發版本應該可以讓你做到這一點,但我似乎無法讓任何工作人員去完成我正在創建的任務。使用MongoDB作爲Celery的消息隊列
版本: 芹菜v2.2.0rc3
的MongoDB 1.6.5
pymongo 1.9
Django的芹菜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()
我已經創建了一個測試tasks.py文件,如下所示:
from celery.decorators import task
@task()
def add(x, y):
return x + y
如果我在後臺啓動芹菜,它似乎正常啓動。然後我打開一個python shell並運行以下代碼:
>>> from myapp.tasks import add
>>> result = add.delay(5,5)
>>> result
<AsyncResult: 7174368d-288b-4abe-a6d7-aeba987fa886>
>>> result.ready()
False
問題是沒有工作人員選擇任務。我錯過了一個設置或什麼?我如何將芹菜指向消息隊列?
該應用程序是否安裝了應用程序?如果有什麼東西,芹菜回來的日誌是什麼? .ready()將返回False的一個常見原因是因爲任務未被識別,Celery會說「未知任務被忽略:......」 – Bartek 2011-03-01 02:44:56