我正在运行一个 Django 项目,其中 Celery 和 MongoDB 作为我的代理,在本地运行良好。我没有使用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 上启动 celery 时,没有任务被列为已注册,并且上述行失败并导致错误
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 上的 celery 没有注册任务?