Skip to main content

Python implementation of the Circuit Breaker pattern.

Project 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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aiobreaker-1.2.0.tar.gz (15.9 kB view details)

Uploaded Source

Built Distribution

aiobreaker-1.2.0-py3-none-any.whl (20.7 kB view details)

Uploaded Python 3

File details

Details for the file aiobreaker-1.2.0.tar.gz.

File metadata

  • Download URL: aiobreaker-1.2.0.tar.gz
  • Upload date:
  • Size: 15.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.4

File hashes

Hashes for aiobreaker-1.2.0.tar.gz
Algorithm Hash digest
SHA256 217a9cfa12e520bb2dd1934bace281d1d7deb8d7630dd183a6295fd22e323ce7
MD5 fd203c5d8272cfab8546861ea940a1ef
BLAKE2b-256 7feb749ef48d3227fd62d500ff01fcd451f10111e00d822c200eb51782ba076a

See more details on using hashes here.

File details

Details for the file aiobreaker-1.2.0-py3-none-any.whl.

File metadata

  • Download URL: aiobreaker-1.2.0-py3-none-any.whl
  • Upload date:
  • Size: 20.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.4

File hashes

Hashes for aiobreaker-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f275decad78bdd161715afeee67e5dde7967de54c836648b44f4eea1b5e41d60
MD5 e2edec31181afe1f0e813b017105e757
BLAKE2b-256 ffc84cd4b2834012ffc71ae3fd69187f08a17f01f3937527b6b5e077f4f5d0db

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page