Metadata-Version: 2.1
Name: aiobreaker
Version: 1.2.0
Summary: Python implementation of the Circuit Breaker pattern.
Home-page: https://github.com/arlyon/aiobreaker
Author: Alexander Lyon
Author-email: arlyon@me.com
License: BSD
Description: aiobreaker
        ==========
        
        aiobreaker is a Python implementation of the Circuit Breaker pattern,
        described in Michael T. Nygard's book `Release It!`_.
        
        Circuit breakers exist to allow one subsystem to fail without destroying
        the entire system. This is done by wrapping dangerous operations
        (typically integration points) with a component that can circumvent
        calls when the system is not healthy.
        
        This project is a fork of pybreaker_ by Daniel Fernandes Martins that
        replaces tornado with native asyncio, originally so I could practice
        packaging and learn about that shiny new ``typing`` package.
        
        .. _`Release It!`: https://pragprog.com/titles/mnee2/release-it-second-edition/
        .. _pybreaker: https://github.com/danielfm/pybreaker
        
        Features
        --------
        
        - Configurable list of excluded exceptions (e.g. business exceptions)
        - Configurable failure threshold and reset timeout
        - Support for several event listeners per circuit breaker
        - Can guard generator functions
        - Functions and properties for easy monitoring and management
        - ``asyncio`` support
        - Optional redis backing
        - Synchronous and asynchronous event listeners
        
        Requirements
        ------------
        
        All you need is ``python 3.6`` or higher.
        
        Installation
        ------------
        
        To install, simply download from pypi:
        
        .. code:: bash
        
            pip install aiobreaker
        
        Usage
        -----
        
        The first step is to create an instance of ``CircuitBreaker`` for each
        integration point you want to protect against.
        
        .. code:: python
        
            from aiobreaker import CircuitBreaker
        
            # Used in database integration points
            db_breaker = CircuitBreaker(fail_max=5, reset_timeout=timedelta(seconds=60))
        
            @db_breaker
            async def outside_integration():
                """Hits the api"""
                ...
        
        At that point, go ahead and get familiar with the documentation.
        
Platform: UNKNOWN
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: BSD License
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3.6
Classifier: Topic :: Software Development :: Libraries
Requires-Python: >=3.6
Description-Content-Type: text/markdown
Provides-Extra: test
Provides-Extra: docs
Provides-Extra: redis
