Python Flask立即响应

时间:2015-06-29 07:54:59

标签: python-2.7 flask

我在python中有一个应用程序需要很长时间来计算。我需要创建REST端点。我使用Flask创建它。但我需要服务器立即响应请求已被接受。如何做它?

1 个答案:

答案 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