No project description provided
Project description
pyhystrix
A library to patch requests package in order to add following functionalities by default:
- Connection and Read timeouts
- Retries on connection failure
- Circuitbreaking
- Adding unique
x-request-id
in request header if not provided
NOTE:: 0.0.2 supports python2.7 and >= 0.0.3 supports python3 only.
Installation
pip3 install pyhystrix
Usage
Before making any request, just call Init()
:
import requests
import pyhystrix
requests.get("http://abc.xyx") // No functionalities of pyhystrix
pyhystrix.Init()
requests.get("http://abc.xyx") // pyhystrix is attached to all requests
Default Configurations can be changed in 2 ways:
-
Setting following env variables:
PHY_CONNECT_TIMEOUT
: connection timeout in secPHY_READ_TIMEOUT
: read timeout in secondsPHY_MAX_RETRIES
: max number of retries for connection failurePHY_CIRCUIT_FAIL_THRESHOLD
: Number of failed requests after which circuit will be open and further requests on the same url will not be allowed.PHY_CIRCUIT_ALIVE_THRESHOLD
: Number of failed requests on open circuit to make it half_open (Described below)PHY_CIRCUIT_DELAY
: Number of seconds after which open circuit will be half_open.
-
parameters in request itself:
max_tries
(int): overridesPHY_MAX_RETRIES
, some rules related to it are follows:max_tries=0
: will cause no retries, fail on first failure.- If a positive value is passed for non
GET
requests, they will be retried too in case received status is instatus_forcelist
.
status_forcelist
: list of http status, retry if the returned status is one of these. default is[500]
onGET
.timeout
: same as timeout in requestsbackoff_factor
: delay in each retry will be affected by this using following formula:{backoff factor} * (2 ^ ({number of total retries} - 1))
. Default =0.5
sec
More Examples
GET
with retry on multiple failure status codes:
import requests
import pyhystrix
pyhystrix.Init()
request.get("http://abc.xyz", status_forcelist=[501, 502, 403])
put
with retry on response status =500
or501
request.put("http://abc.xyz", max_tries=3, status_forcelist=[500, 502])
NOTE: All type of requests will be retried in case of ConnectionError
Circuit Breaker States
- OPEN : No requests will be allowed
- HALF_OPEN : Only one request will be allowed
- CLOSE : All requests will be allowed.
NOTE : State transitions:
CLOSE --> OPEN --> HALF_OPEN --> CLOSE/OPEN
To know more about circuit breaker pattern, click here
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
pyhystrix-1.0.0.tar.gz
(7.1 kB
view hashes)
Built Distribution
Close
Hashes for pyhystrix-1.0.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5ccf7b7e4f6a7da48c5aef11418c51f7dd1c66d9dd4255321967c29518e112f0 |
|
MD5 | 403592459db853af6dea23cdcedf874d |
|
BLAKE2b-256 | 828147196ebef948d44fa0c4a526c3e1754b5794b75a6c13b70330f72fc067fd |