关闭 Go http.Client 的连接池
要禁用 Go 的 http.Client 的连接池,您可以修改其传输设置。主要有两种方法:
方法 1:DisableKeepAlive
将 Transport.DisableKeepAlives 设置为 true 将阻止传输重用现有连接。但是,这可能会导致在请求中添加 Connection: close 标头,这在所有测试场景中可能并不理想。
方法 2:设置 MaxIdleConnsPerHost
将 Transport.MaxIdleConnsPerHost 设置为负值(例如 -1)也会有效禁用连接池。与DisableKeepAlives不同,此方法不会影响请求标头。
示例代码
以下是使用DisableKeepAlive禁用连接池的示例:
t := http.DefaultTransport.(*http.Transport).Clone() t.DisableKeepAlives = true c := &http.Client{Transport: t}
这是一个使用的示例MaxIdleConnsPerHost:
t := http.DefaultTransport.(*http.Transport).Clone() t.MaxIdleConnsPerHost = -1 c := &http.Client{Transport: t}
需要注意的是,将 Dialer.KeepAlive 设置为 -1 不会禁用连接池。此设置仅影响活动连接的保持活动行为,而不影响新连接的创建。
以上是如何禁用 Go 的 http.Client 连接池?的详细内容。更多信息请关注PHP中文网其他相关文章!