卡在芹菜教程上



我的文件夹结构是

proj/
    __init__.py
    celery_app.py
    tasks.py

我的芹菜_App看起来像

from __future__ import absolute_import, unicode_literals
from celery import Celery
app = Celery('proj',
             broker='amqp://',
             backend='amqp://',
             include=['proj.tasks'])
# Optional configuration, see the application user guide.
app.conf.update(
    result_expires=3600,
)
if __name__ == '__main__':
    app.start()

和我的任务。py看起来像

from __future__ import absolute_import, unicode_literals
from celery_app import app
@app.task
def add(x, y):
    return x + y
@app.task
def mul(x, y):
    return x * y
@app.task
def xsum(numbers):
    return sum(numbers)

当我转到命令行并运行

celery -A proj worker --app=proj.celery_app:app -l info

我有一个错误

" Importerror:no模块名为CELERY_APP"

当我从

切换时

来自Celery_App Import App

to

来自.celery_app导入应用

然后它起作用!但是,当我尝试从python shell导入的任务 *跑步时,我得到

value error:在非包装中尝试相对导入

但是,如果我回去拿走前面的。在Celery_app面前,我可以成功地导入它。为什么我需要更改如何导入它以使每个脚本成功运行?

使用绝对导入是绝对正确的事情。因此,您应该继续使用此导入语句

from .celery_app import app

为了在尝试在交互式Python会话中导入您遇到的问题,您应该在包含proj 的同一目录中启动会话,然后进行:

from proj.tasks import *

我已经将您的代码复制到我的机器上,并按照上面的建议做了。

运行这些命令:

cd proj
celery -A proj worker --app=celery_app:app -l info

要正确运行Python脚本,您必须在该脚本文件夹中。这就是为什么您会遇到此错误

Importerror:没有名为CELERY_APP

的模块

您可以尝试在$ PythonPath变量中添加路径。

相关内容

  • 没有找到相关文章

最新更新