SocketTimeoutException在5秒 - 任何增加的方式?

时间:2014-06-27 15:40:22

标签: google-app-engine

我正在点击的服务器定期响应5.5秒,但我甚至在5秒内得到SocketTimeoutException。有没有办法增加这个价值?升级到付费等级会让我有这种能力吗?

2 个答案:

答案 0 :(得分:4)

请参阅https://developers.google.com/appengine/docs/java/urlfetch/#Fetching_URLs_with_java_net

特别是

  

您可以为请求设置截止日期,最长时间   服务将等待回应。默认情况下,获取的截止日期   是5秒。 HTTP请求的最长截止时间为60秒   任务队列和cron作业请求10分钟。使用时   URLConnection接口,该服务使用连接超时   (setConnectTimeout())加上读取超时(setReadTimeout())作为   最后期限。

答案 1 :(得分:1)

您尚未使用任何语言标记您的问题,因此我将尝试涵盖我所知道的问题。

我没有在生产中测试任何这些,只是在开发时。

的Python

似乎支持setdefaulttimeout方法。您可以将的数量作为floatint传递

import socket

socket.setdefaulttimeout(10)

# create socket connections as usual…

爪哇

socket documentation声称它原生支持java.net.Socket。根据{{​​3}},你可以用毫秒指定超时,就像这样(10秒):

Socket socket = new Socket();
socket.connect(new InetSocketAddress(ipAddress, port), 10000);

开始

使用this answer代替socket.DialTimeout,您可以将超时指定为socket.Dial对象(即纳秒)。

import (
    // …
    "appengine/socket"
)

func handler(w http.ResponseWriter, r *http.Request) {
    c := appengine.NewContext(r)
    conn, err := socket.DialTimeout(c, "tcp", "myhost.com:1234", 10*time.Second)
    // …
}

请注意,如果连接到主机名而不是裸IP,则超时可能包括名称解析。可能还有一个上限不是特定于语言的,但没有记录。