Python django在不破坏JSON的情况下多次流式处理字典

Python django在不破坏JSON的情况下多次流式处理字典,python,json,django,stream,Python,Json,Django,Stream,我想使用Django流式传输响应。为此,, 我有这样的看法: def航班(请求、查询): req_obj=Flights.RequestObject(查询) 返回StreamingHttpResponse(req_obj.make_response(),content_type=“application/json”) 为了生成流的数据,我有一个生成器函数“make_response”, 这是类“Flights”的一个方法,实例化为“req_obj” 生成器函数在特定时刻生成一个纯python字典

我想使用Django流式传输响应。为此,, 我有这样的看法:

def航班(请求、查询):
req_obj=Flights.RequestObject(查询)
返回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)
这会导致以下行为:

  • 第一次屈服后,json内容返回有效
  • 在第二个(和之后的)结果产生后,返回的json内容无效
如果返回的字典是这样的话

{“数据”:“一些数据”}

,, 第二次屈服后,用户收到的响应为:

{“数据”:“一些数据”}{“数据”:“一些数据”}

,它不是有效的json


关于如何解决这个问题有什么建议吗?

你试过类似的方法吗

req_obj.update(req_obj.make_response())

这将用您的方法新生成的值更新您的初始dict?

您好,首先,我要感谢您的帮助。不幸的是,我不理解您的答案。我猜此更新将发生在streamingHttpResponse的第一个参数中,不幸的是,这不起作用,因为req_obj.make_response()不是一个对象,而是一个生成器@OmarAh yes correct@RafaelMarques,那么在生成器内部如何执行a:yield self.update(一些dict)我不确定您是如何从飞行对象构建dict的,但由于您可以在make_响应中访问它,您也许可以使用它来更新正在生成的字典,这不是问题所在。问题是,多次生成字典(相等或不同)会生成一些不是字典的东西@Omarright在您的问题中,它返回了两个字典,因此更新将把这些值合并到一个字典中