Lightweight fault tolerance primitives for your modern Python microservices
Project description
🧘♂️️Lightweight fault tolerance primitives for your resilient and modern Python microservices
Hyx (/ˈhʌɪx/) is a set of well-known stability patterns that are commonly needed when you build microservice-based applications. Hyx is meant to be Hystrix (Java), resilience4j (Java) or Polly (C#) but for the Python world.
Key Features
- Implements five commonly used resiliency patterns with various configurations based on advice and experience of industry leaders (e.g. AWS, Google, Netflix)
- Idiomatic Pythonic implementation based on decorators and context managers
- AsyncIO Native Implementation
- Lightweight. Readable Codebase. High Test Coverage
Requirements
- Python 3.9+
- AsyncIO-powered applications (no sync support?)
Installation
Hyx can be installed from PyPi:
pip install hyx
# or via poetry
poetry add hyx
Component Map
Component | Problem | Solution | Implemented? |
---|---|---|---|
🔁 Retry | The failures happen sometimes, but they self-recover after a short time | Automatically retry operation on temporary failures | ✅ |
💾 Cache | |||
⚡️ Circuit Breaker | When downstream microservices have got overloaded, sending even more load can make the situation only worse. | Stop doing requests to your failing microservice temporarily if amount of errors exceeded expected thresholds. Then see if the given time helped the microservice to recover | ✅ |
⏱ Timeout | Sometimes operations may take too much time. We cannot wait that long or after that time the success is unlikely | Bound waiting to a reasonable amount of time | ✅ |
🚰 Bulkhead | If executed without control, some code can take too much resources and put down the whole application (and upstream services) or cause slowness of other places of the application | Fix the amount of calls to the code, queue other calls and fail calls that goes beyond your capacity | ✅ |
🏃♂️ Rate Limiter | The microservice can be requested with any rate even one that can put it down if happens by accident | Limit the rate your system can be accessed by | ✅ |
🤝 Fallback | Nothing can guarantee you that your dependencies will work. What would you do when it's failing? | Degrade gracefully by defining some default values or placeholders if your dependencies are down | ✅ |
Inspired by Polly's Resiliency Policies
Acknowledgements
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
hyx-0.0.2.tar.gz
(20.4 kB
view details)
Built Distribution
hyx-0.0.2-py3-none-any.whl
(27.7 kB
view details)
File details
Details for the file hyx-0.0.2.tar.gz
.
File metadata
- Download URL: hyx-0.0.2.tar.gz
- Upload date:
- Size: 20.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.2.1 CPython/3.9.7 Darwin/21.4.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7f356299770e73b3fa8faf22d62e9cba5a1bb40b87b3ae77b97a425f6802c64e |
|
MD5 | fb556a440745ca45d6a7655f4c2e5fef |
|
BLAKE2b-256 | e4e6b08ae91bd0f8dd1caf76670308904b8577b538a87cf78ca764c5faf82459 |
File details
Details for the file hyx-0.0.2-py3-none-any.whl
.
File metadata
- Download URL: hyx-0.0.2-py3-none-any.whl
- Upload date:
- Size: 27.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.2.1 CPython/3.9.7 Darwin/21.4.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6a422f1c84c31575ac42affa3aa3ced43a23036fc1fab64941355d1cefbd1997 |
|
MD5 | 1d99d2ee89b7ed57868c6259fe0d9385 |
|
BLAKE2b-256 | e3600f1f8f1e308a193143872de11ec0519ea9cab1ee808dd48886d19b2d7359 |