3

我是 python 新手。我正在使用 Flask 创建一个 Web 服务,该服务对linkedin 进行大量 api 调用。这样做的问题是获得最终结果集的时间很长,而前端在这段时间内仍然处于空闲状态。我正在考虑返回直到那时发现的部分结果并继续在服务器端调用 api。有没有办法在 Python 中做到这一点?谢谢。

4

2 回答 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 回答