我正在尝试将一个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);
}
})在本地,在开发服务器中,这是非常好的工作,数据作为一个连续的流传输。但是,当将其作为Azure web服务运行时,GET请求需要很长时间才能同时获取所有数据。在生成器完成之前,服务器似乎不会流任何数据。
这种行为可以归因于在Azure上使用的Flask背后的WSGI/web服务器吗?除了改变平台之外,还有什么解决办法吗?哪个WSGI服务器将支持这种流?
谢谢你的帮助,
鲍里斯
发布于 2016-02-08 11:45:27
根据我的经验,这似乎是由IIS作为Azure WebApp上的的WSGI/Web服务器造成的,但我不确定。
对于WSGI服务器支持这种流的情况,您可以参考线程wsgi。
我建议您可以尝试在Azure上测试其他WSGI + Flask组合服务器,比如Ubuntu服务器。
希望能帮上忙。诚挚的问候。
https://stackoverflow.com/questions/35258168
复制相似问题