用途:为 Python 应用构建容错能力,处理瞬时故障、网络问题与服务中断。适用于给外部服务调用加重试、为网络操作设置超时、构建容错微服务、处理限流与背压、编写基础设施装饰器、设计熔断器。
核心概念:区分瞬时错误(网络超时、临时服务问题,可重试)与永久错误(无效凭证、错误请求,不应重试);指数退避逐步增加重试间隔;抖动(jitter)加入随机性避免惊群;有界重试同时限制尝试次数与总时长。
主要能力与用法:基于 tenacity 库实现生产级重试,如 @retry(stop=stop_after_attempt(3), wait=wait_exponential_jitter(initial=1, max=10))。可仅对白名单异常重试(ConnectionError、TimeoutError、httpx.ConnectTimeout、httpx.ReadTimeout 等),不重试 ValueError、TypeError、认证错误及 4xx(429 除外)。可按 HTTP 状态码重试(429、500、502、503、504),也可组合异常与状态码判断。支持 before_sleep 记录重试日志、stop_after_attempt(5) | stop_after_delay(60) 限制总时长。还提供超时装饰器(asyncio.wait_for)、追踪装饰器、依赖注入提升可测试性、fail_safe 失败返回默认值等模式。
最佳实践:只重试瞬时错误;使用指数退避与抖动;限制总时长;记录每次重试;用装饰器分离基础设施与业务逻辑;注入依赖;所有网络调用设置超时;非关键路径优雅降级;监控重试率。
限制:资料未提供该技能的安装命令、具体版本要求、收费方式或平台支持信息,暂未提供。