- 在日常开发中,调用第三方 HTTP 接口是最常见的任务之一。很多新手直接写 requests.get(url) 就上线,结果一遇到网络抖动、服务端偶发 500,程序就直接崩溃或无限挂起。本文结合一个真实的服务间调用场景,讲清楚超时与重试这两个最容易被忽视、却最关键的细节。 一、先说超时:别让一次请求拖垮整个服务requests 默认没有超时时间。一次 requests.get(url) 如果... 在日常开发中,调用第三方 HTTP 接口是最常见的任务之一。很多新手直接写 requests.get(url) 就上线,结果一遇到网络抖动、服务端偶发 500,程序就直接崩溃或无限挂起。本文结合一个真实的服务间调用场景,讲清楚超时与重试这两个最容易被忽视、却最关键的细节。 一、先说超时:别让一次请求拖垮整个服务requests 默认没有超时时间。一次 requests.get(url) 如果...
- 强缓存让浏览器不发请求,协商缓存问一句再用:Cache-Control 与 ETag 的经典组合策略,入口 HTML 走协商、哈希资源走强缓存,以及 DevTools 排障技巧。 强缓存让浏览器不发请求,协商缓存问一句再用:Cache-Control 与 ETag 的经典组合策略,入口 HTML 走协商、哈希资源走强缓存,以及 DevTools 排障技巧。
- 很多线上故障的起点并不是第一次请求失败,而是重试把一次短暂抖动放大成雪崩:上游刚开始限流,下游几百个实例同时原地重试,限流就变成了持续过载。本文把重试和超时拆开讲清楚:什么能重试、超时怎么分、退避怎么写、以及一个可以直接复用的 Python 示例。 一、先分清:什么能重试,什么不能重试能重试的,一般是“结果不确定、且重做无害”的请求:网络超时、连接被重置、DNS 偶发失败;服务端返回 429... 很多线上故障的起点并不是第一次请求失败,而是重试把一次短暂抖动放大成雪崩:上游刚开始限流,下游几百个实例同时原地重试,限流就变成了持续过载。本文把重试和超时拆开讲清楚:什么能重试、超时怎么分、退避怎么写、以及一个可以直接复用的 Python 示例。 一、先分清:什么能重试,什么不能重试能重试的,一般是“结果不确定、且重做无害”的请求:网络超时、连接被重置、DNS 偶发失败;服务端返回 429...
- 本文介绍 Go 标准库 net/http 的优雅关机原理:用 signal.NotifyContext 捕获 SIGINT/SIGTERM,调用 Server.Shutdown 等待在途请求完成,并配合读、写、空闲超时防止慢连接占用资源;给出可直接运行的完整示例、验证方法与常见误区。 本文介绍 Go 标准库 net/http 的优雅关机原理:用 signal.NotifyContext 捕获 SIGINT/SIGTERM,调用 Server.Shutdown 等待在途请求完成,并配合读、写、空闲超时防止慢连接占用资源;给出可直接运行的完整示例、验证方法与常见误区。
- 用临时目录、回环监听和退出陷阱完成一次 Python HTTP 自检,区分 HTTP 状态与 curl 退出码,并防止端口冲突导致误判。附完整可执行脚本及清理边界。 用临时目录、回环监听和退出陷阱完成一次 Python HTTP 自检,区分 HTTP 状态与 curl 退出码,并防止端口冲突导致误判。附完整可执行脚本及清理边界。
- 状态码是 HTTP 里最"看起来简单"的部分——200 成功、404 找不到、500 服务器错误。但真到了排查线上问题的时候,误读状态码会把人带到完全错误的方向。 这篇挑五个最常见、也最容易被误解的点。 一、200 不代表成功 这是最容易吃亏的一条: HTTP 层的成功和业务层的成功是两件事。 一个很常见的写法: HTTP 层面 200,业务层面是失败。如果你的客户端只看 re 状态码是 HTTP 里最"看起来简单"的部分——200 成功、404 找不到、500 服务器错误。但真到了排查线上问题的时候,误读状态码会把人带到完全错误的方向。 这篇挑五个最常见、也最容易被误解的点。 一、200 不代表成功 这是最容易吃亏的一条: HTTP 层的成功和业务层的成功是两件事。 一个很常见的写法: HTTP 层面 200,业务层面是失败。如果你的客户端只看 re
- 本文用最直白的方式讲清 HTTP 状态码的五大类、常见码含义与排查思路,帮助新手在调接口时先看状态码、再看响应体,少走弯路。 本文用最直白的方式讲清 HTTP 状态码的五大类、常见码含义与排查思路,帮助新手在调接口时先看状态码、再看响应体,少走弯路。
- 接口返回限流响应时,客户端需要避免立即连续重试。更稳妥的方式是优先遵守服务端给出的等待时间,同时限制没有明确提示时的重试频率。先区分明确拒绝与结果未知如果官方响应明确表示请求因限流未被接受,可以按接口文档等待后重试。连接超时、网关错误或响应丢失则不同:客户端未收到成功响应,不足以证明服务端没有处理请求。涉及创建订单或其他有副作用的操作,应先依据业务标识查状态,或使用服务端支持的幂等机制。理解... 接口返回限流响应时,客户端需要避免立即连续重试。更稳妥的方式是优先遵守服务端给出的等待时间,同时限制没有明确提示时的重试频率。先区分明确拒绝与结果未知如果官方响应明确表示请求因限流未被接受,可以按接口文档等待后重试。连接超时、网关错误或响应丢失则不同:客户端未收到成功响应,不足以证明服务端没有处理请求。涉及创建订单或其他有副作用的操作,应先依据业务标识查状态,或使用服务端支持的幂等机制。理解...
- 一、为什么需要长连接每一次 HTTP 请求,底层都要经历「建立 TCP 连接 → 发送请求 → 等待响应 → 关闭连接」四个步骤。TCP 三次握手本身就要消耗 1.5 个 RTT,如果是 HTTPS,还要再叠加 TLS 握手的 1~2 个 RTT。对于高并发的接口服务来说,这些建连开销累积起来非常可观。长连接(Keep-Alive)的思路很简单:让一条 TCP 连接被多个请求复用,避免反复... 一、为什么需要长连接每一次 HTTP 请求,底层都要经历「建立 TCP 连接 → 发送请求 → 等待响应 → 关闭连接」四个步骤。TCP 三次握手本身就要消耗 1.5 个 RTT,如果是 HTTPS,还要再叠加 TLS 握手的 1~2 个 RTT。对于高并发的接口服务来说,这些建连开销累积起来非常可观。长连接(Keep-Alive)的思路很简单:让一条 TCP 连接被多个请求复用,避免反复...
- 页面明明没改,用户却看到旧内容;或者每次刷新都重新下载,带宽账单居高不下。这两种问题常常同时出现,根源都在缓存策略没有分工:该长期缓存的没缓存,该及时更新的又被缓存住了。本文把 HTTP 缓存拆成两层,讲清楚各自管什么、怎么配、以及容易踩的坑。强缓存:不发请求,直接用本地副本强缓存由 Cache-Control 控制。浏览器拿到响应后,在 max-age 有效期内再次请求同一资源时,根本不会... 页面明明没改,用户却看到旧内容;或者每次刷新都重新下载,带宽账单居高不下。这两种问题常常同时出现,根源都在缓存策略没有分工:该长期缓存的没缓存,该及时更新的又被缓存住了。本文把 HTTP 缓存拆成两层,讲清楚各自管什么、怎么配、以及容易踩的坑。强缓存:不发请求,直接用本地副本强缓存由 Cache-Control 控制。浏览器拿到响应后,在 max-age 有效期内再次请求同一资源时,根本不会...
- . .
- 前言实时需求(站内消息、协作编辑、行情推送、任务进度)第一反应都是 WebSocket。但能连上只是开始,真正折磨人的是"半夜连接悄悄断了"“消息重复了”“集群下收不到广播”。本文按连接生命周期过一遍。 一、先选型:轮询 / SSE / WebSocket方案方向适用场景代价短轮询客户端拉低频状态查询大量空请求,延迟高长轮询客户端拉兼容性要求极高占连接,实现复杂SSE服务端推单向流(日志、... 前言实时需求(站内消息、协作编辑、行情推送、任务进度)第一反应都是 WebSocket。但能连上只是开始,真正折磨人的是"半夜连接悄悄断了"“消息重复了”“集群下收不到广播”。本文按连接生命周期过一遍。 一、先选型:轮询 / SSE / WebSocket方案方向适用场景代价短轮询客户端拉低频状态查询大量空请求,延迟高长轮询客户端拉兼容性要求极高占连接,实现复杂SSE服务端推单向流(日志、...
- 从一次网页访问出发,讲清 HTTP 的请求与响应、常用方法与状态码,并用开发者工具看一次真实报文。 从一次网页访问出发,讲清 HTTP 的请求与响应、常用方法与状态码,并用开发者工具看一次真实报文。
- 一、问题从哪里来:超时只设在入口,等于没设很多 Go 服务都配过 HTTP 超时:网关给下游 3 秒,上游给网关 5 秒,看起来每一环都有兜底。但线上仍然会出现这样的现象:客户端早已断开,下游还在跑一个 30 秒的查询;或者一个请求明明已经超时返回,下游服务却继续把结果写进数据库。原因不在超时时间本身,而在超时信号没有沿着调用链传下去。Go 的 context 就是用来解决这个问题的:它把... 一、问题从哪里来:超时只设在入口,等于没设很多 Go 服务都配过 HTTP 超时:网关给下游 3 秒,上游给网关 5 秒,看起来每一环都有兜底。但线上仍然会出现这样的现象:客户端早已断开,下游还在跑一个 30 秒的查询;或者一个请求明明已经超时返回,下游服务却继续把结果写进数据库。原因不在超时时间本身,而在超时信号没有沿着调用链传下去。Go 的 context 就是用来解决这个问题的:它把...
- 不设置缓存头,浏览器和 CDN 的行为往往不可控:静态资源反复下载,HTML 却可能被缓存导致发版后用户看到旧页面。正确做法是按资源类型区分策略。带内容哈希的静态资源(如 app.3f2a.js)可以长缓存:Cache-Control: public, max-age=31536000, immutableHTML 入口文件应每次校验:Cache-Control: no-cacheAPI 响... 不设置缓存头,浏览器和 CDN 的行为往往不可控:静态资源反复下载,HTML 却可能被缓存导致发版后用户看到旧页面。正确做法是按资源类型区分策略。带内容哈希的静态资源(如 app.3f2a.js)可以长缓存:Cache-Control: public, max-age=31536000, immutableHTML 入口文件应每次校验:Cache-Control: no-cacheAPI 响...
上滑加载中
推荐直播
-
华为云码道Agent集成与鸿蒙实战2026/08/11 周二 19:00-21:00
王一男-华为云码道产品规划专家;李炎-华为云码道产品专家;彭江敏-华为云鸿蒙端云一体化开发专家
本次直播带你解读华为云码道7月份产品新特性、新功能。更有专家演示码道Agent Space × 钉钉机器集成实战,从0到1打通消息通道;码道鸿蒙端云一体化实战,快速搭建员工签到系统。
回顾中 -
华为云开发者AI素养直播课·第五期2026/09/04 周五 16:00-18:00
林华鼎-华为云AI开发者运营负责人;蒋春阳-华为云AI开发者案例开发专家
本期直播内容: AI工具体验营 · 第5-8课连讲。Agent-Team 多智能体协作完成毕业设计实践
回顾中 -
华为云开发者AI素养ClassRoom·第六期2026/09/08 周二 19:00-20:00
樊渊-2026华为软件挑战赛冠军
高手来了:看软挑高手解析二维排样问题—从工业难题到算法突破
回顾中
热门标签