我正在Celery和MongoDB運行Django項目作爲我的經紀人,在當地正常工作。我沒有使用django-celery
。該項目位於../myapp/
這看起來是這樣的:芹菜任務註冊並在本地運行良好 - 切換到EC2和芹菜不註冊他們
myapp/
<other folders>
aws/
tasks.py
celeryconfig.py
settings.py
在這種情況下,我只是在運行的aws/tasks.py
原型add()
芹菜例如,它包含:
@task
def add(x, y):
return x+y
當我運行celeryd --loglevel=INFO
在命令行上,它註冊的任務列表罰款,並顯示
[Tasks]
. aws.tasks.add
. (all other tasks in tasks.py)
所以現在這裏的問題。在Python解釋器執行下面的線我的本地機器
>>> from aws.tasks import add
>>> result = add.delay(7,7)
>>> result.get()
14
上工作正常,但當我嘗試啓動在EC2上芹菜,沒有任務被列爲註冊,和上面的線失敗,並導致錯誤
Received unregistered task of type 'aws.tasks.add'.
The message has been ignored and discarded.
Did you remember to import the module containing this task?
Or maybe you are using relative imports?
Please see http://bit.ly/gLye1c for more information.
這是我celeryconfig.py
:
BROKER_URL = "mongodb://localhost:27017/rawDatabase"
CELERY_RESULT_BACKEND = "mongodb"
CELERY_MONGODB_BACKEND_SETTINGS = {
"host": "localhost",
"port": 27017,
"database": "rawDatabase"
}
CELERY_IMPORTS = ("aws.tasks")
我settings.py
包含:
INSTALLED_APPS = (
...
'aws',
...
)
是的,我的PYTHONPATH
包含../myapp/
所以celeryconfig.py應該被拿起。
任何想法可能會造成這種情況?爲什麼EC2上的芹菜不註冊任務?
當'[任務]'爲空時,您是否使用-l info啓動工作人員? – asksol 2012-07-24 15:48:26
btw,當你使用django-celery時,不會使用celeryconfig.py ... – asksol 2012-07-24 15:49:02
對不起,看到你現在沒有使用django-celery。我想你應該嘗試在你的tasks.py模塊中添加print語句來查看worker是否完全導入它。 – asksol 2012-07-24 15:50:09