java - 如何在 Google App Engine 中设置连接超时?

标签 java google-app-engine timeout

我使用下面几行从GAE获取网页,但是需要很长时间,如何提高超时限制?

try
{
  URL url=new URL(Url + "?r=" + System.currentTimeMillis());
  BufferedReader reader = new BufferedReader(
                          new InputStreamReader(url.openStream()));

  while ((line=reader.readLine())!=null) { Result += line + "\n"; }
  reader.close();
}
catch (MalformedURLException e) { ... }
catch (IOException e) { ... }

最佳答案

GAE/J 提供了两个 API:

选项 1。java.net API,您可以在其中使用 URLConnection(或 HttpURLConnection)类:

URLConnection conn = url.openConnection();
conn.setConnectTimeout(timeoutMs);
conn.setReadTimeout(timeoutMs);

选项 2. GAE Low Level API 提供了一个 FetchOptions#setDeadline 方法来设置获取请求的截止日期。

作为第三种选择,您还可以使用特定的库,例如 HttpClient ,但您必须检查该库是否适用于 GAE/J 的固有限制。

HttpParams httpParams = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParams, connectionTimeoutMillis);
HttpConnectionParams.setSoTimeout(httpParams, socketTimeoutMillis);
HttpClient httpClient = new DefaultHttpClient(httpParams);

关于java - 如何在 Google App Engine 中设置连接超时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7352748/

相关文章:

java - 超时没有限制吗? - HttpsURL连接

python curses while循环和超时

java - 用户登录后 Spring Security 导航到其他页面

java - 无效的 CEN header (错误签名)

java - 如何在命名空间之间复制数据存储实体

postgresql - 将测试和开发应用程序版本部署到 Google Compute Platform 的最佳策略

无法想象无限循环的情况

java - 从同一个类中的另一个方法调用 main 方法

java - 使用同一对象的线程池

java - CharBuffer 在内存映射的 ByteBuffer 之上,不使用大量堆空间