在 Flask 中使用 Celery 时无法导入名称 App

Cannot import name App when using Celery in Flask

我正在编写一个简单的 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)

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

谢谢

您收到错误是因为 App 不是由 celery.app 模块发布的,请参阅 the code. Also, it seems that you are using flask_celery, which is not the recommended way 现在如何将 Flask 与 Celery 一起使用:

From Celery 3.0 the Flask-Celery integration package is no longer recommended and you should use the standard Celery API instead.

这是涵盖与 Celery 集成的 Flask 文档部分:

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