在Flask中使用芹菜时无法导入名称应用

时间:2019-04-29 11:13:06

标签: python flask celery

我正在编写一个简单的Flask应用程序,该应用程序使用Celery运行后台任务,但是当我尝试在终端上运行该应用程序时,出现以下错误消息:

Traceback (most recent call last):
  File "server.py", line 2, in <module>
    from flask_celery import make_celery
  File "/usr/local/lib/python2.7/site-packages/flask_celery.py", line 16, in <module>
    from celery.app import App, AppPickler, current_app as current_celery
ImportError: cannot import name App

这是我正在使用的代码:

from flask import Flask
from flask_celery import make_celery

app = Flask(__name__)
app.config["CELERY_BROKER_URL"] = "amqp://guest:guest@localhost:5672//"

celery = make_celery(app)


@celery.task(name='server.reverse')
def reverse(string):
    return string[::-1]


@app.route("/process/<name>")
def process(name):
    reverse.delay(name)
    return "I sent an async request!"


if __name__ == "__main__":
    app.run(debug=True)

有人知道我在做什么错吗?

谢谢

1 个答案:

答案 0 :(得分:1)

您收到错误消息是因为App模块未发布celery.app,请参见the code。另外,看来您正在使用flask_celery,这是not the recommended way现在如何将Flask与Celery结合使用:

  

从Celery 3.0开始,不再建议使用Flask-Celery集成软件包,而应使用标准Celery API。

这是Flask文档中涉及与Celery集成的部分:

http://flask.pocoo.org/docs/1.0/patterns/celery/