gpt4 book ai didi

go - HTTP重用连接条件

转载 作者:IT王子 更新时间:2023-10-29 01:47:27 24 4
gpt4 key购买 nike

来自官方文档https://golang.org/pkg/net/http/#Client.Do如果 Body 未关闭且未完全读取,RoundTripper 似乎可能 无法为下一个“保持事件”请求重新使用 TCP 连接。这可能是关于什么的?

据我所知,当读取整个 Body 时,不一定需要调用 Close。那么连接复用的必要条件是什么?

代码片段(注意注释掉 defer resp.Body.Close()),它在一个循环中创建多个连接,通过使用 netstat 分析它,似乎所有连接都使用了相同的 TCP 连接:

for nextPage != "" {
req, err := http.NewRequest("GET", nextPage, nil)
req.Header.Set("Authorization", fmt.Sprintf("Bearer %s", *token))
if err != nil {
panic(err)
}
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
// defer resp.Body.Close()
result := []*User{}
if err := json.NewDecoder(resp.Body).Decode(&result); err != nil {
panic(err)
}

nextPage = getNextPage(resp.Header.Get("Link"))
}

最佳答案

文档没有说 不要调用 Close() 来保持事件状态。只要说如果你想重新使用连接,你必须调用 Close() 并完全阅读。

关于go - HTTP重用连接条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44747374/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com