我有两个应用程序,一个烧瓶API(后端)和一个前端应用程序。最近我不得不实现一个流机制,所以前端可以调用api来检索一些数据(分页)并将其内容流回来。
我按照此处所述的指南介绍了如何在Flask中回送响应。
我在前端的伪代码基本上是这样的:
myReader.SetDoc();
在 return Response(stream_with_context(generate()))
内,我执行以下操作:
generate()
我发现产生的结果不一致。我的直觉是它与阻止API调用有关。在发送回用户的生成器中是否可以阻止api调用?
答案 0 :(得分:0)
由于我们正在处理库requests
,您应该传入stream=True
并在响应中使用该生成器。 flask.Response
可以使用字符串或迭代。
@app.route("/foo")
def foo():
_resp = requests.get(url, stream=True)
_resp.raise_for_status()
resp = Response(
response=stream_with_context(_resp.iter_content(chunk_size=1024*10)),
status=200,
content_type=_resp.headers["Content-Type"],
direct_passthrough=False)
return resp
请注意,Content-Type
也是透明代理的。
要回答您的问题,如果您在生成器中使用阻止呼叫并不重要 - 但我不明白您为什么要这样做,给出您的示例。