SuperAPI AI 工具集

python-resilience

编程与开发

查看项目

更新于 10-16 08:47

技能介绍

用途:为 Python 应用提供容错与弹性模式指导,帮助系统在依赖不可靠时仍能运行,适用于外部服务调用重试、网络超时、容错微服务、限流与背压、基础设施装饰器、熔断器设计等场景。

主要能力:区分瞬时故障与永久故障,只重试网络超时、临时服务问题等瞬时错误,不重试凭证无效、错误请求等永久错误;采用指数退避并加入抖动,避免大量客户端同时重试造成惊群;限制重试次数与总时长,防止无限循环。

使用方式:以 tenacity 库为主,通过装饰器将重试逻辑与业务逻辑分离。基础用法为 @retry(stop=stop_after_attempt(3), wait=wait_exponential_jitter(initial=1, max=10))。可按异常类型白名单重试,如 ConnectionError、TimeoutError、httpx.ConnectTimeout、httpx.ReadTimeout;可按 HTTP 状态码重试,如 429、502、503、504;也可组合异常与状态码判断,并用 before_sleep_log 记录每次重试。

最佳实践:只重试瞬时错误;使用指数退避与抖动;用 stop_after_attempt(5) | stop_after_delay(60) 限制总时长;记录每次重试;用装饰器隔离重试逻辑;依赖注入便于测试;所有网络调用设置超时;非关键路径优雅降级;监控重试率。

限制:不重试 ValueError、TypeError 等代码缺陷,不重试 AuthenticationError 及除 429 外的 HTTP 4xx;技能仅提供模式与实现指导,不提供具体业务代码实现;需要项目上下文与技术栈信息;不涉及非技术业务决策。更详细的进阶模式见 references/details.md。