golang管理http代理

能东棍 · · 3612 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

说明

由于使用go的自带的net/http库并结合http代理使用时会遇到too many open filestoo many open connections这样的错误,导致无法创建新的连接,其原因是没有释放已用过的连接,本文只是用来总结解决这个问题的设置

代码

组装http请求时设置访问完成时自动关闭连接,这样就不会让服务器和客户端一直保持连接,从而造成资源耗光了

http_requ, _ := http.NewRequest(req.Method, dest_url, req.Body)
http_requ.Header = req.Header
//在头部设置使用之后关闭连接
http_requ.Header.Set("Connection", "close")
//或者直接设置Close
http_requ.Close = true

其他设置是看源代码中的注释瞎猜的

http_client := &http.Client{
    Timeout: time.Duration(3 * time.Second),//客户端设置3秒超时
}
http_client.Transport = &http.Transport{
    DisableKeepAlives: false,//关闭连接复用,因为后台连接过多最后会造成端口耗尽
    MaxIdleConns: -1,  //最大空闲连接数量
    IdleConnTimeout: time.Duration(3 * time.Second),  //空闲连接超时时间
    Proxy: http.ProxyURL(proxy_addr), //设置http代理地址
}

有疑问加站长微信联系(非本文作者)

本文来自:开源中国博客

感谢作者:能东棍

查看原文:golang管理http代理

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

3612 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传