我在python中有一个应用程序需要很长时间来计算。我需要创建REST端点。我使用Flask创建它。但我需要服务器立即响应请求已被接受。如何做它?
答案 0 :(得分:0)
假设您不希望在请求的响应正文中包含繁重计算的结果。您仍然可以在视图中生成一个线程,并返回http代码202 / Accepted,表示&#34;请求已被接受处理,但处理尚未完成。&#34; RFC-2616 < / p>
哪个应该提供以下代码
import httplib
from threading import Thread
from flask import Flask, Response
from mymodule import heavy_lift
app = Flask(__name__)
@app.route("/async")
def async_start():
Thread(target=heavy_lift).start()
return Response(status=httplib.ACCEPTED)
if __name__ == "__main__":
app.run()
如果您想使用Flask执行繁重的异步内容,我建议使用分布式任务队列,例如Celery,它非常适合Flask(参见Flask documentation)