4

我已经对这个主题进行了多次谷歌搜索,但没有找到任何东西(除了确认 AppEngine 忽略对'resp.setHeader(“transfer-encoding”,xxxx)'的调用。

我的问题是我有一个服务器进程需要一点时间才能完成(平均约 3 秒),但它会产生连续流的结果(即第一个数据对象在 10 毫秒后准备就绪)。

目前,服务器缓冲响应,然后将整个响应吐给客户端进行显示。虽然这可行,但它并不是一个出色的用户体验,因为用户必须等待整个过程完成才能看到第一个结果......

我相信使用分块传输可以解决这个问题,因为我可以立即向客户端发送第一个响应(并在它可用时立即流式传输后续数据),从而更好地了解进度等。

我的问题是我无法弄清楚如何启用分块传输。

谷歌搜索分块传输和应用程序引擎通常会找到想要从 blobstore禁用分块传输的人的帖子,或者说默认启用分块传输的帖子。然而,我迄今为止的测试表明,至少对于我的应用程序来说,这不是真的。

同样,非应用程序引擎引用谈论设置“传输编码”内容标头-但这在 AppEngine 上被明确忽略(至少,根据 python 文档-在 Java 端没有找到任何东西,说明它明确的,但是当我测试它时它也不起作用)。

最后,我已经尝试过刷新 respose 对象,获取响应写入器和刷新,获取响应输出流和刷新等,没有任何区别。

所以 - 我的问题是: 如何启用分块传输?

4

1 回答 1

5

Appengine 不支持响应流。必须立即返回整个响应。

App Engine 不支持向客户端发送数据,在应用程序中执行更多计算,然后发送更多数据。换句话说,App Engine 不支持“流式传输”数据以响应单个请求。

查看响应 Java

于 2011-03-11T13:01:05.723 回答