java - 如何在 Google App Engine 中检测 HTTP 响应大小

标签 java google-app-engine servlets httpresponse gae-quotas

我正在使用 Java 为 Google App Engine 编写一个应用程序。某个 Servlet 生成的响应可能会超过 32 MB 的限制。在开发服务器上,这似乎不会引起任何问题。在生产服务器上,我需要一种方法将响应拆分为多个请求。

我想知道超出限制时生产服务器上会发生什么。当超出限制时,PrintWriter 是否抛出 IOException ?或者仅当 servlet 终止时才抛出异常?理想情况下,我希望能够在附加每个部分之前计算总响应大小(无需自己计算字节,因为我不知道 HTTP header 的大小),以便我可以正确清理响应的末尾响应(即附加“}”以完成 JSON 对象)。或者有更好的方法来处理这种情况吗?

最佳答案

尼克是对的,当前响应大小限制为 32MB。

应用引擎会缓冲响应数据,因此在代码运行完毕之前它不会看到您的响应,因此它无法引发异常或以其他方式发出代码可以捕获的错误信号。相反,它会向客户端返回 500,其正文如下:

HTTP 响应太大:34000134。限制为:33554432。

您可以通过在 http://shell.appspot.com/ 中运行它来亲自尝试一下:

打印“x”* 34 * 1000 * 1000

关于java - 如何在 Google App Engine 中检测 HTTP 响应大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6604452/

相关文章:

java - 在非开发模式下运行 GWT + App Engine

google-app-engine - `gcloud preview app deploy app.yaml` 部署除 Docker 镜像之外的所有源文件。这有必要吗

java - 是否可以转发更改请求方法的请求?

想要与 Servlet 交互的 Java 控制台程序

java - 无法在 Tomcat 7 上部署 YouTrack (org.apache.catalina.LifecycleException)

java - 当 javafx 中发生操作时,如何更改分割 Pane 的一半,同时保持另一半不变

java - 使用嵌入式 Jetty 运行 JSF-2 页面?

java - 编译器是否违反了范围规则?

java - 在不同的包中实现数据库 JPA 和 JPA 客户端类(Apache Karaf 和 OpenJPA)

java - 节奏模板引擎与 GAE/J : AccessControlException in even simplest case