ImportError:没有为 Celery 3.1 和 Python 2.7 命名的 celery 模块



在Windows上使用Python 2.7和Celery 3.1.25,当我们使用以下命令运行Celery worker

celery -A proj worker -l info

我们收到错误

ImportError: No module named celery

问题:当我们停止工作时,工人停止工作

  • 将文件的名称从celery.py celeryApp.py更改
  • tasks.py 中的导入语句从 from .celery import app 更改为 from celeryApp import app

为什么会这样?我们如何解决这个问题?

目录结构

/proj/__init__.py
/proj/celeryApp.py
/proj/tasks.py
/

proj/celeryApp.py

from __future__ import absolute_import, unicode_literals
from celery import Celery
app = Celery('tasks', 
    broker='amqp://jack:jack@192.168.1.26:5672//',
    backend='amqp://',
    include=['proj.tasks'])
if __name__ == '__main__':
    app.start()
/

proj/tasks.py

from __future__ import absolute_import, unicode_literals
from celeryApp import app
@app.task
def add(x, y):
    return x + y

启动芹菜工作器时,应命名应用以匹配配置芹菜模块的 python 文件。您应该从

celery worker -l info -A tasks

您不应将配置文件命名为 celery.py 。这将在开始导入时导致问题

from celery import Celery

您的文件应该命名为其他名称,但不应命名为 celery.py

同样在您的配置文件中,无需添加

if __name__ == '__main__':
    app.start()

如果您要显式包含proj.tasks请确保proj在python路径中,或者您可以在使用tasks应用程序启动工作时将其删除。

相关内容

  • 没有找到相关文章

最新更新