Skip to main content

Lightweight fault tolerance primitives for your modern Python microservices

Project description

Hyx

🧘‍♂️️Lightweight fault tolerance primitives for your resilient and modern Python microservices

Package Version Downloads Supported Python Versions
Documentation Status Test Status Coverage


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

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


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)

Uploaded Source

Built Distribution

hyx-0.0.2-py3-none-any.whl (27.7 kB view details)

Uploaded Python 3

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

Hashes for hyx-0.0.2.tar.gz
Algorithm Hash digest
SHA256 7f356299770e73b3fa8faf22d62e9cba5a1bb40b87b3ae77b97a425f6802c64e
MD5 fb556a440745ca45d6a7655f4c2e5fef
BLAKE2b-256 e4e6b08ae91bd0f8dd1caf76670308904b8577b538a87cf78ca764c5faf82459

See more details on using hashes here.

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

Hashes for hyx-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 6a422f1c84c31575ac42affa3aa3ced43a23036fc1fab64941355d1cefbd1997
MD5 1d99d2ee89b7ed57868c6259fe0d9385
BLAKE2b-256 e3600f1f8f1e308a193143872de11ec0519ea9cab1ee808dd48886d19b2d7359

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