Ver código fonte

@author liuqing
@commit HTTP Client 超时修复 统一 HTTP Client,Timeout=30s,连接池复用

lq 3 meses atrás
pai
commit
15f6555c15

+ 26 - 0
common/util/httpclient.go

@@ -0,0 +1,26 @@
+package util
+
+import (
+	"net"
+	"net/http"
+	"time"
+)
+
+var DefaultHTTPClient *http.Client
+
+func init() {
+	DefaultHTTPClient = &http.Client{
+		Timeout: 30 * time.Second,
+		Transport: &http.Transport{
+			DialContext: (&net.Dialer{
+				Timeout:   3 * time.Second,
+				KeepAlive: 30 * time.Second,
+			}).DialContext,
+			MaxIdleConns:          100,
+			MaxIdleConnsPerHost:   10,
+			IdleConnTimeout:       90 * time.Second,
+			TLSHandshakeTimeout:   5 * time.Second,
+			ExpectContinueTimeout: 1 * time.Second,
+		},
+	}
+}

+ 16 - 1
edge/led_screen/clt_client/httpclient_led.go

@@ -1,8 +1,10 @@
 package clt_client
 
 import (
+	"net"
 	"net/http"
 	"sync"
+	"time"
 )
 
 var once sync.Once
@@ -11,7 +13,20 @@ var CltClient cltclient
 func GetClient() cltclient {
 	once.Do(func() {
 		CltClient = cltclient{
-			http.Client{},
+			HttpClient: http.Client{
+				Timeout: 30 * time.Second,
+				Transport: &http.Transport{
+					DialContext: (&net.Dialer{
+						Timeout:   3 * time.Second,
+						KeepAlive: 30 * time.Second,
+					}).DialContext,
+					MaxIdleConns:          100,
+					MaxIdleConnsPerHost:   10,
+					IdleConnTimeout:       90 * time.Second,
+					TLSHandshakeTimeout:   5 * time.Second,
+					ExpectContinueTimeout: 1 * time.Second,
+				},
+			},
 		}
 		CltClient.LoadVsn()
 	})