我想使用并发在一个连接中发出多个 HTTP 请求,但我的代码大约发出四到五个请求。但是当我不使用并发时,它只会有一个连接。
package main
import (
"fmt"
"net/http"
"sync"
"time"
)
func main() {
var wg sync.WaitGroup
client := &http.Client{
Transport: &http.Transport{
MaxIdleConns: 10,
IdleConnTimeout: 90 * time.Second,
DisableKeepAlives: false,
},}
for i := 0; i < 5; i++ {
wg.Add(1)
go func(index int) {
defer wg.Done()
resp, err := client.Get("https://www.httpbin.org/get")
if err != nil {
fmt.Println(err)
return
}
defer resp.Body.Close()
fmt.Println(i)
}(i)
}
wg.Wait()
fmt.Println("done")
}
`Body'仍然打开直到功能完成:
defer resp.Body.Close()
尝试一下
resp.Body.Close()