diff --git a/session.go b/session.go index 598680e..d989492 100644 --- a/session.go +++ b/session.go @@ -178,6 +178,8 @@ func NewSession() *Session { client := &http.Client{} transport := &http.Transport{DisableCompression: true, DisableKeepAlives: true} + EnsureTransporterFinalized(transport) + client.Transport = transport cjar, err := cookiejar.New(&cookiejar.Options{PublicSuffixList: publicsuffix.List}) if err != nil { @@ -361,16 +363,15 @@ func (ses *Session) Delete(url string) *Workflow { return wf } -// CloseIdleConnections closes the idle connections that a session client may make use of -// 从levigross/grequests 借鉴 -func (ses *Session) CloseIdleConnections() { - ses.client.Transport.(*http.Transport).CloseIdleConnections() -} +// // CloseIdleConnections closes the idle connections that a session client may make use of +// // 从levigross/grequests 借鉴 +// func (ses *Session) CloseIdleConnections() { +// ses.client.Transport.(*http.Transport).CloseIdleConnections() +// } // EnsureTransporterFinalized will ensure that when the HTTP client is GCed // the runtime will close the idle connections (so that they won't leak) // this function was adopted from Hashicorp's go-cleanhttp package -// 暂时不用, 标记到以后是否起作用 func EnsureTransporterFinalized(httpTransport *http.Transport) { runtime.SetFinalizer(&httpTransport, func(transportInt **http.Transport) { (*transportInt).CloseIdleConnections()