Golang 频繁请求第三方接口时设置复用连接(即 HTTP keeplive )

yufei       4 年, 7 月 前       3092

网站做着做着可能就有某个服务需要频繁的请求第三方接口,有时候 1秒一次,有时候 30 秒一次,有时候 1 分钟一次。

如果是 1 分钟内有两次,我们当然是希望说第一次发起连接请求后,后面的请求能否复用之前的连接。这种功能在 HTTP 中叫做 keeplive,也就是说第一个请求成功返回后并不会立即就关闭连接,而是等到一个超时,超时过后如果没有继续发起请求,那么就会关闭连接。

Go 语言我们一般使用 http.Get()http.Post() 方法发起请求,那么就只要修改默认的配置即可

func init() {
    http.DefaultClient.Timeout = time.Second * 30
}

如果是自定义 client 则需要手动配置了

http.Client{
    Timeout: 5 * time.Second,
    Transport: &http.Transport{
        Proxy: http.ProxyFromEnvironment,
        DialContext: (&net.Dialer{
            Timeout:   1 * time.Second,
            KeepAlive: 30 * time.Second,
            DualStack: true,
        }).DialContext,
        MaxIdleConns:        100,
        MaxIdleConnsPerHost: 8,
        IdleConnTimeout:     120 * time.Second,
    },
}

30 * time.Second 就是用来设置 HTTp keeplive 的

目前尚无回复
简单教程 = 简单教程,简单编程
简单教程 是一个关于技术和学习的地方
现在注册
已注册用户请 登入
关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.