我是 python 新手。我正在使用 Flask 创建一个 Web 服务,该服务对linkedin 进行大量 api 调用。这样做的问题是获得最终结果集的时间很长,而前端在这段时间内仍然处于空闲状态。我正在考虑返回直到那时发现的部分结果并继续在服务器端调用 api。有没有办法在 Python 中做到这一点?谢谢。
问问题
1395 次
2 回答
2
有几种方法可以做到这一点。最简单的方法是立即通过烧瓶返回初始请求,然后在您返回的页面上使用 Javascript 向另一个 URL 发出附加请求,并在返回时加载该请求。也许显示加载指示器或其他东西。
附加 URL 如下所示
@app.route("/linkedin-data")
def linkedin():
# make some call to the linked in api which returns "data", probably in json
return flask.jsonify(**data)
从根本上说,没有。您不能返回部分请求。所以你必须把你的请求分解成更小的单元。您可以使用 websocket 流式传输数据。但是您仍然会发回一个初始请求,然后该请求将使用 Javascript 创建一个 websocket 连接,然后开始将数据流式传输回用户。
于 2013-09-13T08:03:59.390 回答
2
Flask 能够将数据流回客户端。有时这需要修改 javascript 来做你想做的事,但可以使用 flask 和 jinja2 将内容分块发送给用户。这需要一些争论,但它是可行的。
使用生成器分解内容的视图可能如下所示(尽管链接到 SO 答案要全面得多)。
from flask import Response
@app.route('/image')
def generate_large_image():
def generate():
while True:
if not processing_finished():
yield ""
else:
yield get_image()
return Response(generate(), mimetype='image/jpeg')
于 2013-09-13T08:33:34.633 回答