指数退避重试与超时控制:写给任何"失败后想重试"场景的第一道防线
网络请求失败、数据库连接闪断、第三方接口 5xx、消息队列抖动……只要你的程序会调用别人,就逃不开两个问题:“要不要重试” 和 “最多等多久”。最简单的”立刻重试”往往变成灾难:所有失败请求在同一秒集体撞回去,把服务端打得更死;而完全不设超时的调用,会在对方挂掉时把你的线程/协程无限期挂住。本文用两段不到 100 行的 Python 代码,讲透”指数退避重试”与”超时控制”这对黄金搭档——为什么退避比固定间隔聪明,超时该怎么兜底,怎么组合使用,以及一个容易被忽略的坑:重试让用户等更久,还可能把网关(nginx)等到超时。