Python "Circuit Breaker" implementation
OTHER License
With version 2.0.0 circuitbreaker
now supports async functions, as easy as:
@circuit
async def external_call():
...
A big thank you to @pauloromeira for your great contribution! 💪 🙌
⚠️ We finally stripped support for Python2 and some early Python3 versions.
Supported Python versions now are:
The circuitbreaker
project has been classified as "Critical Project" on PyPI, meaning it belongs to the top 1% of all projects on PyPI based on the downloads over the last 6 months. We're working an important peace here 🙂
https://pypi.org/project/circuitbreaker/
Therefore a big Thank You! to all contributors of this release!
🙌 @AugPro @matthewhughes934 @major @pabs3 @Freaky @ozooxo @xtaje 🙌
By default, the circuit breaker will raise a CircuitBreaker
exception when the circuit is opened. You can instead specify a function to be called when the circuit is opened. This function can be specified with the fallback_function
parameter and will be called with the same parameters as the decorated function would be.
The logic for handling thrown exceptions as failures can now be customized by passing a callable. The callable will be passed the exception type and value, and should return True if the exception should be treated as a failure.
Using the wall clock to measure durations is vulnerable to changes in the system clock causing misbehavior - a clock accidentally set far in the future and later reset could result in the circuit breaker remaining open for a great deal longer than expected. To solve this, a monotonic clock is now used for timing open states.
The circuitbreaker default names are now taken from __qualname__
if available for more precise default naming.
Published by fabfuel over 2 years ago