python装饰器-自动重试
带参数的自动重试装饰器
在调用不稳定的外部 API 时,自动重试非常有用。
下面定义了一个带重试次数参数到装饰器,在调用外部api时如果失败会重试, 最大重试次数3次
import random
import functools
def retry(max_attempts=3):
def decorator(func):
@functools.wraps(func)
def wrapper(*args, **kwargs):
for i in range(1, max_attempts + 1):
try:
return func(*args, **kwargs)
except Exception as e:
print(f"第 {i} 次调用失败: {e},准备重试...")
raise Exception("达到最大重试次数,依然失败")
return wrapper
return decorator
@retry(max_attempts=3)
def unstable_api():
if random.random() < 0.7: # 模拟 70% 的失败率
raise ConnectionError("网络波动")
return "API 调用成功!"
print(unstable_api())

浙公网安备 33010602011771号