Django Celery应用程序 - 没有名为celery的模块错误

时间:2013-03-01 13:28:13

标签: django-celery

我已经在教程中创建了一个django-celery应用程序:

http://docs.celeryproject.org/en/master/django/first-steps-with-django.html

当我在没有应用程序参数的情况下运行它时,一切正常,如:

$ python manage.py celery worker -l info

但我无法使用application参数启动它,如:

$ python manage.py celery worker -A myapp -l info

其中myapp是我用以下代码创建项目时为应用程序指定的名称:

$ python manage.py startapp myapp

我得到的错误是:

ImportError: No module named celery

有谁知道为什么会这样,以及如何解决它?

2 个答案:

答案 0 :(得分:14)

2014年4月编辑:

Celery文档已更新为3.1;以下解决方案现已过时,请参阅:

http://docs.celeryproject.org/en/master/django/first-steps-with-django.html


默认情况下,celery会搜索名为celery.py的模块以查找其配置。您可以通过指定it on the app argument让芹菜使用与celery.py不同的名称 - 在此示例中,我们将在settings.py中查找celery配置:

python manage.py celery worker --app=myapp.settings

使用django-celery时,您可以使用上述调用来启动celery,也可以按照我最初的方式执行操作,并在我的应用程序包celery.py中创建myapp

from settings import celery

我的Django settings.py包含正常的芹菜配置:

from celery import Celery

celery = Celery(broker="amqp://guest:guest@127.0.0.1:5672//")

celery.conf.update(
    CELERY_DEFAULT_QUEUE = "myapp",
    CELERY_DEFAULT_EXCHANGE = "myapp",
    CELERY_DEFAULT_EXCHANGE_TYPE = "direct",
    CELERY_DEFAULT_ROUTING_KEY = "myapp",
)

然后像这样经营芹菜工人:

python manage.py celery worker --app=myapp

为了清楚起见,这是我的完整申请结构:

myproject/
    manage.py
    myapp/
        __init__.py
        settings.py
        celery.py

答案 1 :(得分:0)

请确保您尝试从可以访问芹菜模块的目录启动芹菜工作者。在我的情况下,我试图从app目录而不是项目启动worker。