go 语言的 http 客户端可以在初始化话的时候通过
client := http.Client{
Timeout: 5 * time.Second,
}
来设置请求超时,即整个 http 请求到完成响应的时间限制。
关于这个Timeout的详细含义,官方文档里解释的很清楚:
那么如果想另外设置 tcp 连接阶段的超时可以这样玩:
client := http.Client{
Transport: &http.Transport{
Proxy: http.ProxyFromEnvironment,
Dial: (&net.Dialer{
Timeout: 2 * time.Second,
Deadline: time.Now().Add(3 * time.Second),
KeepAlive: 2 * time.Second,
}).Dial,
TLSHandshakeTimeout: 2 * time.Second,
},
Timeout: 5 * time.Second,
}
http.ProxyFromEnvironment
...
Proxy: func(*http.Request) (*url.URL, error) {return nil, nil},
...