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 服务器。
希望对您有所帮助。最好的问候。
我正在尝试将 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 服务器。
希望对您有所帮助。最好的问候。