美文网首页
go httpClient

go httpClient

作者: core1988 | 来源:发表于2020-01-10 16:59 被阅读0次

    产品中一定不要使用默认的http.Get

    如果你觉得方便,直接使用http.Get或者类似的方法发送请求,可能会导致一些问题, 因为这默认是使用DefaultClient作为client:

    多goroutine共享,这意味着在别处对DefaultClient的改动会影响你当前的使用

    未设置connection timeout和 read/write timeout

    默认的idle connection等设置可能不满足你的需求

    一个具体的使用默认的client导致的问题可以参考 Don’t use Go’s default HTTP client (in production)

    所以Go开发过程中最好使用自己定制的Client:

    vartimeout = time.Duration(2* time.Second)

    funcdialTimeout(network, addrstring) (net.Conn, error) {

    returnnet.DialTimeout(network, addr, timeout)

    }

    funcmain() {

        transport := http.Transport{

            Dial: dialTimeout,

            Proxy: ...,

            MaxIdleConns: ...,

            MaxIdleConnsPerHost: ...,

            IdleConnTimeout: ...,

            ResponseHeaderTimeout: ...,

            DisableCompression:...,

        }

        client := http.Client{

            Transport: &transport,

        }

    resp, err := client.Get("http://some.url")

    }

    相关文章

      网友评论

          本文标题:go httpClient

          本文链接:https://www.haomeiwen.com/subject/qhkmactx.html