diff options
Diffstat (limited to 'www/py-aiobreaker/files')
| -rw-r--r-- | www/py-aiobreaker/files/patch-license.md | 30 | ||||
| -rw-r--r-- | www/py-aiobreaker/files/patch-readme.rst | 66 |
2 files changed, 96 insertions, 0 deletions
diff --git a/www/py-aiobreaker/files/patch-license.md b/www/py-aiobreaker/files/patch-license.md new file mode 100644 index 000000000000..5b2138040734 --- /dev/null +++ b/www/py-aiobreaker/files/patch-license.md @@ -0,0 +1,30 @@ +--- license.md.orig 2025-09-11 08:55:21 UTC ++++ license.md +@@ -0,0 +1,27 @@ ++Copyright (c) 2010-2014, Daniel Fernandes Martins ++All rights reserved. ++ ++Redistribution and use in source and binary forms, with or without modification, ++are permitted provided that the following conditions are met: ++ ++ 1. Redistributions of source code must retain the above copyright notice, ++ this list of conditions and the following disclaimer. ++ ++ 2. Redistributions in binary form must reproduce the above copyright ++ notice, this list of conditions and the following disclaimer in the ++ documentation and/or other materials provided with the distribution. ++ ++ 3. Neither the name of PyBreaker nor the names of its contributors may ++ be used to endorse or promote products derived from this software ++ software without specific prior written permission. ++ ++THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ++ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ++WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE ++DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ++ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES ++(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; ++LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ++ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS ++SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/www/py-aiobreaker/files/patch-readme.rst b/www/py-aiobreaker/files/patch-readme.rst new file mode 100644 index 000000000000..48f624e0f6f1 --- /dev/null +++ b/www/py-aiobreaker/files/patch-readme.rst @@ -0,0 +1,66 @@ +--- readme.rst.orig 2025-09-11 08:55:00 UTC ++++ readme.rst +@@ -0,0 +1,63 @@ ++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. |
