Flask 生成器未在 Azure Web 应用程序中流式传输

Flask generator not streaming in Azure web app

我正在尝试将 JSON 流从 Flask 网络应用程序发送到浏览器。 这是服务器端生成器的简化版本:

@app.route('/stream')
def stream():
  def generate():
    for i in range(1000):
      time.sleep(0.05)
      yield '{"key": %d}' % i
  return Response(generate(), mimetype="application/json")

在浏览器中,我用 oboe.js:

使用流
stream = oboe('/stream')
  .on('node', {
    'key': function (scheme) {
       console.log(scheme);
    }
  })

在本地,在开发服务器中这非常有效,数据以连续流的形式传输。但是当运行 this作为Azure web服务时,GET请求需要很长时间,然后一次获取所有数据。在生成器完成之前,服务器似乎不会流式传输任何数据。

此行为是否可以归因于 Azure 上使用的 Flask 背后的 WSGI/web 服务器?除了换平台还有什么办法吗?哪个 WSGI 服务器支持这种流式传输?

感谢您的帮助,

鲍里斯

根据我的经验,这似乎是由 IIS 作为 Azure WebApp 上 Flask 的 WSGI/Web 服务器引起的,但我不确定。

哪个WSGI服务器支持这种流式传输,可以参考讨论帖。

我建议您可以尝试在 Azure VM 上测试其他 WSGI + Flask 组合服务器,例如 Ubuntu VM 服务器。

希望对您有所帮助。最好的问候。