我正在编写一个简单的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)
有人知道我在做什么错吗?
谢谢
答案 0 :(得分:1)
您收到错误消息是因为App
模块未发布celery.app
,请参见the code。另外,看来您正在使用flask_celery
,这是not the recommended way现在如何将Flask与Celery结合使用:
从Celery 3.0开始,不再建议使用Flask-Celery集成软件包,而应使用标准Celery API。
这是Flask文档中涉及与Celery集成的部分: