Skip to main content

A circuit breaker implementation for asyncio

Project description

Documentation Status Continuous Integration Status Code Coverage Report

Purgatory is an implementation of the circuit breaker pattern.

Why another Circuit Breaker implementation ?

The Purgatory library has been develop to be used in blacksmith where the library aiobreaker was used but I encountered limitation so, I decide to build my own implementation that feet well with blacksmith.

Features

Purgatory supports the creation of many circuit breakers easily, that can be used as context manager or decorator. Circuit breaker can be asynchronous or synchronous.

Example with a context manager for an async API

from purgatory import AsyncCircuitBreakerFactory

circuitbreaker = AsyncCircuitBreakerFactory()
async with await circuitbreaker.get_breaker("my_circuit"):
   ...

Example with a decorator

from purgatory import AsyncCircuitBreakerFactory

circuitbreaker = AsyncCircuitBreakerFactory()

@circuitbreaker("another circuit")
async def function_that_may_fail():
   ...

Example with a context manager for an synchronous API

from purgatory import SyncCircuitBreakerFactory

circuitbreaker = SyncCircuitBreakerFactory()
with circuitbreaker.get_breaker("my_circuit"):
   ...

Circuit breakers states and monitoring

The state of every circuits can be stored in memory, shared in redis, or be completly customized.

It also support monitoring, using event hook.

Purgatory is fully typed and fully tested.

Read More

You can read the full documentation of this library here.

Alternatives

Here is a list of alternatives, which may or may not support coroutines.

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

purgatory-circuitbreaker-0.7.2.tar.gz (12.3 kB view details)

Uploaded Source

Built Distribution

purgatory_circuitbreaker-0.7.2-py3-none-any.whl (19.9 kB view details)

Uploaded Python 3

File details

Details for the file purgatory-circuitbreaker-0.7.2.tar.gz.

File metadata

  • Download URL: purgatory-circuitbreaker-0.7.2.tar.gz
  • Upload date:
  • Size: 12.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.12 CPython/3.10.1 Linux/5.15.11-arch2-1

File hashes

Hashes for purgatory-circuitbreaker-0.7.2.tar.gz
Algorithm Hash digest
SHA256 7de4282822d11fe2ebe5cb7982da932c32284134c25630ab4dacd597ffafb8a4
MD5 5dfe655c7e8d9d8a166a0ac9fe29bc44
BLAKE2b-256 8d904136c2dd4e86b79390c94f88c6deaf215eea1feb506da55a1355743d78c1

See more details on using hashes here.

File details

Details for the file purgatory_circuitbreaker-0.7.2-py3-none-any.whl.

File metadata

File hashes

Hashes for purgatory_circuitbreaker-0.7.2-py3-none-any.whl
Algorithm Hash digest
SHA256 094b5abc10dba502532ca9510af3606cee05f7fbdf54f2c2acd6f85bc8f7f72f
MD5 071fb3f5ce2753daa5368e0793d0356d
BLAKE2b-256 d210c54b75b392c7baa8e73bd03d554c8cda619b56ee5f0131dd92074a2ddbbe

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