失败重试越打越慢,加退避和随机抖动

固定间隔重试,下游一抖就被整批请求打穿。

改成指数退避,每次把等待时间翻倍。

再叠随机抖动,避免所有实例同点重试。

必须同时设最大次数和总时限,否则一样卡死。

只对幂等操作重试,写接口要带幂等键。

# 指数退避 + 全抖动,base 取 100~200ms,上限别超 5s
import random, time

def with_retry(fn, tries=5, base=0.2, cap=5.0):
    for i in range(tries):
        try:
            return fn()
        except (TimeoutError, ConnectionError):
            if i == tries - 1:
                raise
            delay = min(cap, base * (2 ** i))
            time.sleep(random.uniform(0, delay))  # 抖动落在 0~delay
THE END
喜欢就支持一下吧
点赞7 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容