我已就此主题进行过多次谷歌搜索,但未能找到任何内容(除了确认AppEngine忽略对'resp.setHeader(“transfer-encoding”,xxxx)'的调用。
我的问题是我有一个服务器进程需要一点时间来完成(~3秒avg),但是会产生持续流的结果(即第一个数据对象在10ms之后就绪了)。
目前,服务器缓冲响应,然后将整批内容发送到客户端进行显示。虽然这有效,但它并不是一个出色的用户体验,因为用户必须等待整个过程完成才能看到第一批结果......
我相信使用分块传输可以解决这个问题,因为我可以立即向客户端发送第一个响应(并在可用时立即传输后续数据),从而更好地了解进度等。
我的问题是我无法弄清楚如何启用分块传输。
谷歌搜索分块转移和应用程序引擎主要是从想要从blobstore 禁用分块转移的人发布帖子,或者发布默认启用分块传输的帖子。但是,到目前为止,我的测试表明,至少在我的应用中,情况并非如此。
同样,非app-engine引用谈论设置'transfer-encoding'内容头 - 但是这在AppEngine上被明确忽略(至少,它是根据python文档 - 在Java端找不到任何东西,它明确地说明了,但是当我测试它时它也没有用。)
最后,我已经尝试刷新respose对象,获取响应编写器和刷新,获取响应输出流和刷新等没有任何区别。
所以 - 我的问题是: 如何启用分块转移?
答案 0 :(得分:5)
Appengine不支持回复流式传输。整个回复必须立即归还。
App Engine不支持向客户端发送数据,在应用程序中执行更多计算,然后发送更多数据。换句话说,App Engine不支持“流”数据以响应单个请求。