Celery と MongoDB をローカルで正常に動作するブローカーとして Django プロジェクトを実行しています。私は使用していませんdjango-celery
。プロジェクトは../myapp/
次のような場所にあります。
myapp/
<other folders>
aws/
tasks.py
celeryconfig.py
settings.py
この場合、プロトタイプのadd()
Celery の例を で実行しているだけで、次のaws/tasks.py
内容が含まれています。
@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 のセロリがタスクを登録しないのはなぜですか?