我目前正在努力寻找一种在 Go 中制作 HTTP 帖子时重用连接的方法。
我已经创建了一个传输和客户端,如下所示:
// Create a new transport and HTTP client tr := &http.Transport{} client := &http.Client{Transport: tr}
然后我将此客户端指针传递到一个 goroutine 中,该 goroutine 将多个帖子发送到同一个端点,如下所示:
r, err := client.Post(url, "application/json", post)
查看 netstat 这似乎导致每个帖子都有一个新连接,从而导致大量并发连接被打开。
在这种情况下重用连接的正确方法是什么?
确保您阅读直到响应完成并调用Close()。
Close()
例如
res, _ := client.Do(req) io.Copy(ioutil.Discard, res.Body) res.Body.Close()
再次…为确保http.Client连接重用,请务必:
http.Client
ioutil.ReadAll(resp.Body)
Body.Close()