Лёгкая библиотека отказоустойчивости для Java с декораторами Circuit Breaker, Rate Limiter, Retry, Bulkhead и Time Limiter для функционального кода.
danielfm/pybreaker
Реализация паттерна Circuit Breaker для Python: прерывает вызовы к сбоящим зависимостям, защищая остальную систему.
- Звёзды
- 701
- Форки
- 96
- Открытые issues
- 28
- Последний коммит
- в прошлом месяце
Что это?
PyBreaker оборачивает вызовы ненадёжных точек интеграции, например баз данных, очередей или внешних сервисов. После заданного числа последовательных сбоев цепь размыкается, и последующие вызовы сразу завершаются ошибкой, не ожидая ответа от неисправной зависимости. По истечении тайм-аута сброса следующий вызов пропускается, чтобы проверить, восстановилась ли зависимость.
Circuit Breaker можно использовать как декоратор, через прямой вызов метода или как контекстный менеджер. Библиотека позволяет исключать бизнес-исключения из подсчёта сбоев, подключать несколько обработчиков событий и защищать функции-генераторы. Состояние можно проверять и менять во время работы программы с помощью свойств и методов.
Состояние можно хранить в памяти или в Redis, используя отдельное пространство имён для каждого Circuit Breaker. Также предусмотрена опциональная поддержка асинхронных корутин Tornado. Для работы библиотеки требуется Python 3.10 или новее.
Ключевые возможности
- 01Настраиваемый порог сбоев и тайм-аут сброса
- 02Исключение бизнес-исключений из подсчёта сбоев по типу или вызываемому объекту
- 03Несколько обработчиков событий для каждого Circuit Breaker
- 04Защита функций-генераторов
- 05Опциональное хранение состояния в Redis
- 06Опциональная поддержка асинхронных вызовов Tornado
Сценарии использования
- Защита вызовов базы данных от каскадных сбоев при её недоступности
- Немедленное завершение вызовов нестабильного стороннего HTTP API
- Логирование изменений состояния Circuit Breaker или отправка оповещений о них в production-сервисах
Быстрый старт
- 1
Установите PyBreaker из PyPI
pip install pybreaker - 2
Создайте CircuitBreaker и защитите с его помощью функцию
Что важно знать
- Требуется Python версии 3.10 или новее.
В подборках
Темы
Частые вопросы
- Что такое pybreaker?
- Реализация паттерна Circuit Breaker для Python: прерывает вызовы к сбоящим зависимостям, защищая остальную систему. PyBreaker оборачивает вызовы ненадёжных точек интеграции, например баз данных, очередей или внешних сервисов. После заданного числа последовательных сбоев цепь размыкается, и последующие вызовы сразу завершаются ошибкой, не ожидая ответа от неисправной зависимости. По истечении тайм-аута сброса следующий вызов пропускается, чтобы проверить, восстановилась ли зависимость.
- pybreaker можно использовать бесплатно? Какая у него лицензия?
- pybreaker распространяется с открытым исходным кодом под лицензией BSD-3-Clause. Перед использованием в коммерческих продуктах проверьте условия лицензии.
- pybreaker всё ещё поддерживается?
- Обновлялся за последние 6 месяцев. Последний коммит в pybreaker — 25 сент. 2026 г..
- Для чего можно использовать pybreaker?
- Защита вызовов базы данных от каскадных сбоев при её недоступности Немедленное завершение вызовов нестабильного стороннего HTTP API Логирование изменений состояния Circuit Breaker или отправка оповещений о них в production-сервисах
- Как установить pybreaker?
- Установите PyBreaker из PyPI: pip install pybreaker Создайте CircuitBreaker и защитите с его помощью функцию
- Где скачать pybreaker?
- Исходный код и инструкции по установке — на GitHub: https://github.com/danielfm/pybreaker
Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.
Похожие проекты
Фреймворк на Go для веб-сервисов и RPC-микросервисов со встроенными механизмами отказоустойчивости и генератором кода goctl на основе спецификаций .api.
Реализация Spring Cloud для интеграции приложений Spring Cloud с Polaris от Tencent — системой обнаружения сервисов и управления ими.
Открытая service mesh-платформа, которая добавляет микросервисам управление трафиком, безопасность и наблюдаемость с минимальными изменениями кода или вовсе без них.
Лёгкий backend для мгновенных сообщений на чистом Go с поддержкой личных и групповых рассылок через WebSocket и TCP.
База знаний для подготовки Java backend-разработчиков к собеседованиям: многопоточность, распределённые системы, микросервисы и Big Data.