首页 > 其他分享 >【发现一个小问题】golang http client: 配置了Client 对象的 Timeout 就会导致 context.WithTimeout() 模式的超时控制失效

【发现一个小问题】golang http client: 配置了Client 对象的 Timeout 就会导致 context.WithTimeout() 模式的超时控制失效

时间:2024-04-30 14:24:05浏览次数:29  
标签:WithTimeout http context client Timeout time

作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢!


我这样初始化了客户端:

var client = http.Client{Timeout:time.Duration(1000) * time.Millisecond,}

然后在 request 创建过程中使用了 context 的 timeout 机制:

timeoutCtx, cancel := context.WithTimeout( context.Background(), time.Duration(2000)*time.Millisecond )
req, err = http.NewRequestWithContext(timeoutCtx, method, url, postBody)
//...
client.Do(req)  // 在这里始终超时。


注释掉 client 初始化时候的 Timeout 后正常。
还未阅读内部源码,暂不明白后续的原理。

标签:WithTimeout,http,context,client,Timeout,time
From: https://www.cnblogs.com/ahfuzhang/p/18167937

相关文章

  • 【moectf】web.http
    用wsrx打开靶机根据任务描述得到moectf{basic_http_knowledge_oen0w64iYZqSeT6BT8c9OgFTV-KNMT6g}......
  • 搭建https的es+kibana(7.9.1)
    背景:elasticsearch7需要开启https才可以创建报警,因此就需要搭建https的elasticsearch参考官方网站:https://www.elastic.co/guide/en/cloud-on-k8s/current/k8s-deploy-elasticsearch.html 第一步,创建crdkubectlcreate-fhttps://download.elastic.co/downloads/eck/2.12.1......
  • Windows Server 下 IIS 申请部署 Let's Encrypt 证书实现 免费 HTTPS
    certbot命令行搞了半天一直失败找到个工具Certify简单方便1、首先下载Certify下载到服务器上并安装。下载地址:https://certifytheweb.com/2、第一次启动程序时会弹出对话框让我们填写个邮箱地址,等证书快要过期的时候我们会收到续订证书的提醒邮件。这里我们填上常用的ema......
  • 转载golang中net/http包用法
    转自:https://studygolang.com/articles/55151.前言http包包含http客户端和服务端的实现,利用Get,Head,Post,以及PostForm实现HTTP或者HTTPS的请求.2.本文分析内容安排函数结构3.函数3.1服务端函数funcHandle(patternstring,handlerHandler)将handler按照指定的......
  • httprunner测试框架(一):支持不同环境执行
     首先,httprunner已经是一个较完善的接口测试框架了,基本可以拿来即用,本文提供一种支持不同环境执行用例的实现思想,其余部分均是采用httprunner脚手架搭建-httprunner工作原理:执行前会先加载.env文件,将.env文件中的内容加载到内存中,如下图所示 -.env文件htttprunne......
  • 通过Http链接地址爬取有赞微信商城商品信息及下载至EXCEL
    一、环境开发环境:MicrosoftVisualStudioProfessional2022(2)(64位)-Current版本17.7.7.netcore6.0AngleSharp1.1.2AngleSharp.Js0.15.0Downloder3.0.6Magicodes.IE.Excel2.7.5.1二、添加winform项目 三、添加html操作类 四、添加http请求帮助类......
  • SpringBoot配置HTTPS及开发调试
    前言在实际开发过程中,如果后端需要启用https访问,通常项目启动后配置nginx代理再配置https,前端调用时高版本的chrome还会因为证书未信任导致调用失败,通过摸索整理一套开发调试下的https方案,特此分享后端配置生成HTTPS密钥keytool-genkeypair-aliastomcat-keyalgRSA-keysi......
  • httprunner 4.x学习 - 12 测试用例引用另一个测试用例
    前言把登录用例变 export导出变量,变成全局变量,这样其它用例可以引用登录用例config:name:登录variables:username:"admin1"password:"123456"teststeps:-name:postrequest:method:POSTurl:${ENV(base_url)}/loginjson:......
  • [转]<a>标签超链接跳转到第三方系统提示:The Http request is not acceptable for the
    原文地址:TheHttprequestisnotacceptablefortherequestedresource.-CSDN博客1.问题描述在做一个点击本系统的一个按钮打开第三方链接并跳转新页面,跳转过去的第三方链接由https://ip地址组成,报以下错:TheHttprequestisnotacceptablefortherequestedresource.2.......
  • .net core,.net 6使用SoapCore开发webservice接口,以及使用HttpClientFactory动态访问we
    1.使用soapCorenuget包 2.新建接口及实现2.1新建接口 2.2新建实现 2.3新建接收实体 2.4返回实体 3.接口注入使用  4.启动程序,直接访问对应的asmx地址  ......