用途:为 Python 应用添加容错能力,优雅处理瞬时故障、网络问题和依赖服务中断。适用于给外部服务调用加重试、为网络操作设超时、构建容错微服务、处理限流与背压、编写基础设施装饰器以及设计断路器。
核心概念:区分瞬时故障与永久故障,只重试瞬时错误;采用指数退避,逐次延长等待时间;加入抖动随机性,避免多个客户端同时重试造成惊群;设置重试上限,同时限制尝试次数和总时长,防止无限循环。
主要能力:基于 tenacity 库提供生产级重试逻辑,支持按异常类型重试、按 HTTP 状态码重试,以及异常与状态码组合重试。可配置 retry_if_exception_type、stop_after_attempt、stop_after_delay、wait_exponential_jitter、retry_if_result、before_sleep_log 等。示例覆盖基础重试、仅重试合适错误、按状态码重试和综合重试。
使用方式:典型用法是 import tenacity 并用 @retry 装饰目标函数,指定重试异常白名单、停止条件和等待策略。HTTP 场景可配合 httpx 使用,对连接错误、读超时重试,并对 429、500、502、503、504 等状态码重试。
限制与注意:不要重试 ValueError、TypeError 等代码缺陷,也不要重试认证失败和除 429 外的 4xx 客户端错误;网络调用必须设置超时;每次重试应记录日志;重试逻辑与业务逻辑保持分离;高重试率往往意味着底层问题,需要监控。更详细的高级模式见 references/details.md。具体安装命令与价格信息暂未提供。