github.com/qiniu/go-sdk/v7@v7.27.0/sms/rpc/transport.go (about) 1 package rpc 2 3 import ( 4 "net" 5 "net/http" 6 "time" 7 ) 8 9 // DefaultDailTimeout 默认超时时间: 5秒 10 const DefaultDailTimeout = time.Duration(5) * time.Second 11 12 // DefaultTransport 默认 HTTP Transport 13 var DefaultTransport = NewTransportTimeout(DefaultDailTimeout, 0) 14 15 // NewTransportTimeout 返回指定超时时间的 Transport 对象 16 func NewTransportTimeout(dial, resp time.Duration) http.RoundTripper { 17 t := &http.Transport{ // DefaultTransport 18 Proxy: http.ProxyFromEnvironment, 19 TLSHandshakeTimeout: 10 * time.Second, 20 } 21 t.Dial = (&net.Dialer{ 22 Timeout: dial, 23 KeepAlive: 30 * time.Second, 24 }).Dial 25 t.ResponseHeaderTimeout = resp 26 return t 27 } 28 29 // NewTransportTimeoutWithConnsPool 返回指定超时时间和最大连接主机数的 Transport 对象 30 func NewTransportTimeoutWithConnsPool(dial, resp time.Duration, poolSize int) http.RoundTripper { 31 t := &http.Transport{ // DefaultTransport 32 Proxy: http.ProxyFromEnvironment, 33 TLSHandshakeTimeout: 10 * time.Second, 34 MaxIdleConnsPerHost: poolSize, 35 } 36 t.Dial = (&net.Dialer{ 37 Timeout: dial, 38 KeepAlive: 30 * time.Second, 39 }).Dial 40 t.ResponseHeaderTimeout = resp 41 return t 42 }