【发布时间】:2018-05-22 14:14:26
【问题描述】:
我想使用 Django 流式传输响应。为了做到这一点, 我有这样的看法:
def flights(request, query):
req_obj = Flights.RequestObject(query)
return StreamingHttpResponse(req_obj.make_response(), content_type="application/json")
为了生成流的数据,我有一个生成器函数“make_response”, 这是“Flights”类的一个方法,实例化为“req_obj”。
生成器函数在特定时刻产生一个纯 Python 字典。
def make_response(self):
for _ in range(0,3):
yield some_dict
time.sleep(1)
这会导致以下行为:
- 第一次yield后,json内容返回有效;
- 在第二个(及后续)产生后,返回的 json 内容无效;
如果返回的字典是这样的
{"data": "some_data"}
, 在第二次 yield 之后,用户收到的响应是:
{"data": "some_data"}{"data": "some_data"}
,这不是有效的 json。
关于如何解决这个问题有什么建议吗?
【问题讨论】: