Python 重试库 Tenacity 核心用法与实战指南
在开发分布式系统、微服务或调用外部 API 时,网络抖动、服务超时或临时性故障是常见挑战。手动实现重试逻辑往往繁琐且难以维护。Tenacity 是一个强大且灵活的 Python 重试库,它提供了丰富的策略和钩子函数,帮助你优雅地处理不稳定操作。本文将深入讲解 Tenacity 的安装、配置、核心用法及高级特性,并提供完整的代码示例。
安装 Tenacity
使用 pip 安装 Tenacity:
pip install tenacity
核心概念:@retry 装饰器
Tenacity 的核心是通过 @retry 装饰器将重试逻辑应用到目标函数上。该装饰器允许你定义何时停止重试、重试之间的等待时间以及在何种条件下执行重试。
基本示例
以下示例展示了如何配置最大重试次数:
from tenacity import retry, stop_after_attempt
@retry(stop=stop_after_attempt(3))
def do_something():
print("Doing something...")
raise Exception("Something went wrong!")
try:
do_something()
except Exception as e:
print(f"最终失败:{e}")
在此示例中,函数 do_something 每次调用都会抛出异常。Tenacity 会拦截异常并自动重试,直到达到 3 次尝试后停止,最后重新抛出原始异常。
配置策略详解
Tenacity 的配置主要分为三个维度:停止策略(Stop)、等待策略(Wait)和重试条件(Retry)。
1. 停止策略 (Stop)
决定何时放弃重试。
stop_after_attempt(n): 尝试 n 次后停止。stop_after_delay(seconds): 总耗时超过指定秒数后停止。stop_any(*stoppers): 任意一个停止条件满足即停止。
from tenacity import stop_after_attempt, stop_after_delay
@retry(stop=(stop_after_attempt(5) | stop_after_delay()))
():


