net/http 连接池超时控制?

1. 运行环境

Golang版本:1.17

2. 问题描述?

伪代码:


var Client = &http.Client{}

// GetA
func GetA(url string) (response *http.Response, err error) {
    req, err := http.NewRequest("GET",url,nil)

    if err != nil {
        return nil, err
    }

    return client.Do(req)
}

3. 您期望得到的结果?

在不自行使用 channel/ctx 之类的情况下,实现连接池+超时控制

4. 您实际得到的结果?

试过的方案:
1. (&http.Client{}).Timeout 可以控制 client 无法控制连接池的某个连接
2. http.NewRequestWithContext 通过 ctx 控制失败

如:URL,200毫秒内返回结果(100%),超时设定为1秒,使用 ctx GetA 会随机出现超时情况?

光年之外
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!