重试延迟机制(指数退避 + 随机抖动策略)
核心算法
1. 指数退避
delay = initial_delay * (multiplier ** retry_count)
delay = min(delay, max_delay)
2. 随机抖动 ±25%
jitter = delay * 0.25
delay += random.uniform(-jitter, jitter)
默认参数
- initial_delay = 1.0秒
- multiplier = 2.0
- max_delay = 60.0秒
- jitter = ±25%
💡 关键设计特性
1️⃣ 指数退避
- 延迟按 2^n 增长:1s → 2s → 4s → 8s → 16s → 32s → 60s
- 快速响应短暂故障,避免对持续故障过度重试
2️⃣ 随机抖动
- 防止"雷鸣羊群效应"(所有客户端同时重连导致服务器过载)
- 抖动范围 ±25% 分散重连时刻
3️⃣ 延迟上限
- 最大延迟 60秒,避免无限等待
- 第6次及以后重试都保持在 45-75秒区间
4️⃣ 无限重试
- max_retries=None,系统会持续重连直到成功
- 适合处理网络波动