from tenacity import retry
# 配置重试:最多重试3次,每次间隔2秒,仅对请求异常重试
@retry(
    stop=stop_after_attempt(3),  # 最多重试3次
    wait=wait_fixed(2),          # 每次重试间隔2秒
    retry=retry_if_exception_type(requests.exceptions.RequestException)  # 仅对请求异常重试
)
def fetch_url(url):
    response = requests.get(url)
    response.raise_for_status()  # 抛出HTTP错误
    return response.text

  Tenacity 是 Python 中一个用于处理重试逻辑的库,它提供了简洁而灵活的方式来实现各种重试策略,帮助开发者轻松处理因网络波动、资源暂时不可用等原因导致的临时错误。

  • 装饰器语法:通过 @retry 装饰器快速为函数添加重试功能,无需编写复杂的循环和条件判断。
  • 丰富的停止条件:支持按重试次数(stop=stop_after_attempt(n))、时间(stop=stop_after_delay(seconds))等条件停止重试。
  • 灵活的等待策略:可以设置固定等待时间(wait=wait_fixed(seconds))、指数退避(wait=wait_exponential(multiplier=1, min=4, max=10))等等待方式,避免频繁重试对资源造成压力。
  • 重试触发条件:可指定仅对特定异常(retry=retry_if_exception_type(IOError))或满足特定条件(retry=retry_if_result(lambda x: x is None))时才进行重试。
  • 回调机制:支持在重试前后、成功或失败时执行回调函数,方便记录日志、监控等操作。
posted on 2025-08-22 20:50  hole_cheng  阅读(12)  评论(0)    收藏  举报