给接口加超时与重试:一次真实的小踩坑记录

举报
yd_289830645 发表于 2026/11/02 21:51:40 2026/11/02
【摘要】 前几天调一个第三方接口,程序偶尔卡住很久才报错,排查后发现是没有设超时:默认会一直等下去。教训很简单,凡是调外部接口,先把超时写死,再谈重试。我的做法是:连接超时设短一些,比如 3 秒,用于判断对方是否可达;读取超时设长一些,比如 10 秒,留给对方处理业务的时间。两者分开写,比只写一个总超时更能定位问题:连不上是网络或对方挂了,读超时多半是对方处理慢。重试也要有边界:只对 GET 这类幂等...

前几天调一个第三方接口,程序偶尔卡住很久才报错,排查后发现是没有设超时:默认会一直等下去。教训很简单,凡是调外部接口,先把超时写死,再谈重试。

我的做法是:连接超时设短一些,比如 3 秒,用于判断对方是否可达;读取超时设长一些,比如 10 秒,留给对方处理业务的时间。两者分开写,比只写一个总超时更能定位问题:连不上是网络或对方挂了,读超时多半是对方处理慢。

重试也要有边界:只对 GET 这类幂等请求、且是超时或 502、503、504 这类临时错误重试,最多 3 次,间隔用 1 秒、2 秒、4 秒递增;写操作不要盲目重试,否则可能重复下单或重复扣款。每次重试前记一条日志,写清第几次、什么错误,线上排障会省很多时间。

最后加一层兜底:超时后给用户一个可理解的提示,而不是让页面一直转圈;同时把超时时间、重试次数写进配置,不要散落在代码各处。这样下次接口变慢,先改配置就能先止血,再慢慢定位根因。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。