Repolode
danielfm

danielfm/pybreaker

Python 版断路器模式实现,在依赖服务故障时阻断调用,保护系统其余部分。

Star
700
Fork
96
未关闭 Issue
28
最近提交
上个月

这是什么?

PyBreaker 是断路器模式的 Python 实现,用于包装数据库、消息队列或外部服务等容易出故障的调用。连续失败次数达到设定阈值后,断路器打开,后续调用会直接失败,不再等待已损坏的依赖。经过重置超时后,会放行一次调用来检测依赖是否恢复。

断路器可以用作装饰器,也可以通过 call 方法或 with 语句使用。它支持将业务异常排除在失败计数之外,支持为同一断路器注册多个事件监听器,并可保护生成器函数。运行时还可以通过属性和方法查看与修改断路器状态。

断路器状态可保存在内存中,也可借助 Redis 持久化,每个断路器可使用独立命名空间。项目还可选支持 Tornado 异步调用。运行环境要求 Python 3.10 及以上。

核心功能

  • 01可配置失败阈值和重置超时时间
  • 02可按异常类型或过滤函数排除业务异常
  • 03每个断路器可注册多个事件监听器
  • 04可保护生成器函数
  • 05可选使用 Redis 存储断路器状态
  • 06可选支持异步 Tornado 调用

适用场景

  • 数据库不可用时避免故障级联扩散
  • 对不稳定的第三方 HTTP 接口快速失败
  • 在生产服务中记录断路器状态变化或触发告警

快速上手

  1. 1

    从 PyPI 安装 PyBreaker

    pip install pybreaker
  2. 2

    创建 CircuitBreaker 并用它保护函数

使用前须知

  • 需要 Python 3.10 或更高版本。

收录于专题

标签

#circuit-breaker#resilience#fault-tolerance#python#redis#microservices

常见问题

pybreaker 是什么?
Python 版断路器模式实现,在依赖服务故障时阻断调用,保护系统其余部分。 PyBreaker 是断路器模式的 Python 实现,用于包装数据库、消息队列或外部服务等容易出故障的调用。连续失败次数达到设定阈值后,断路器打开,后续调用会直接失败,不再等待已损坏的依赖。经过重置超时后,会放行一次调用来检测依赖是否恢复。
pybreaker 可以免费使用吗?用的什么许可证?
pybreaker 以 BSD-3-Clause 许可证开源。用于商业产品前,请先确认许可证条款。
pybreaker 还在维护吗?
半年内有更新。pybreaker 最近一次提交是在 2026年9月25日。
pybreaker 适合用来做什么?
数据库不可用时避免故障级联扩散 对不稳定的第三方 HTTP 接口快速失败 在生产服务中记录断路器状态变化或触发告警
pybreaker 怎么安装和运行?
从 PyPI 安装 PyBreaker: pip install pybreaker 创建 CircuitBreaker 并用它保护函数
在哪里获取 pybreaker?
源代码和安装说明在 GitHub 上:https://github.com/danielfm/pybreaker

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目

面向 Java 函数式编程的轻量容错库,提供熔断、限流、重试、舱壁隔离等装饰器。

后端与 API#java#fault-tolerance#circuit-breaker
1.1万+2 本周1539JavaApache-2.0更新于 8天前