Golang 中并发 HTTP 请求期间如何保持连接重用

问题描述 投票:0回答:1

我想使用并发在一个连接中发出多个 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")
}
http
1个回答
0
投票

`Body'仍然打开直到功能完成:

defer resp.Body.Close()

尝试一下

resp.Body.Close()
© www.soinside.com 2019 - 2024. All rights reserved.