Configures the passed-in requests' Session
to retry on failed requests due to connection errors, timeouts, specific HTTP response codes (5XX by default) and 30X redirections —anything that could fail.
Python 3.6+.
Basic usage:
from retry_requests import retry
my_session = retry()
my_session.get("http://foo.bar")
This get
will retry three times in case of error waiting some time between retries. Errors could be:
- Waiting for the server to start answering for 5 seconds.
- No access to the server or a dropped connection.
- An HTTP answer of 500, 502, or 504.
You can change these defaults:
from retry_requests import retry
from requests import Session
my_session = retry(Session(), retries=5, backoff_factor=0.2)
my_session.get('https://foo.bar')
Check the function retry
to know more about this configuration.
Note that you have a TSession
, a Session
with a default timeout, and RSession
, a Session
with a timeout that always raise_for_status()
, for your convenience.
Heavily inspired from Peterbe.com <https://www.peterbe.com/plog/ best-practice-with-retries-with-requests>. Thank you!
Just pip install retry-requests
.
Clone this project and then, at its root directory, run python setup.py test
. Note that you need an active Internet connection to run the tests.