我正在点击的服务器定期响应5.5秒,但我甚至在5秒内得到SocketTimeoutException。有没有办法增加这个价值?升级到付费等级会让我有这种能力吗?
答案 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)
您尚未使用任何语言标记您的问题,因此我将尝试涵盖我所知道的问题。
我没有在生产中测试任何这些,只是在开发时。
似乎支持setdefaulttimeout方法。您可以将秒的数量作为float
或int
传递
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,则超时可能包括名称解析。可能还有一个上限不是特定于语言的,但没有记录。