首页  >  文章  >  后端开发  >  如何禁用 Go 的 http.Client 连接池?

如何禁用 Go 的 http.Client 连接池?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-06 22:25:02475浏览

How can I disable connection pooling for Go's http.Client?

关闭 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn