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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
|