Coverage for pyriandx/utils.py: 35%
17 statements
« prev ^ index » next coverage.py v6.4.2, created at 2022-08-30 13:27 +1000
« prev ^ index » next coverage.py v6.4.2, created at 2022-08-30 13:27 +1000
1# -*- coding: utf-8 -*-
2import http.client as http_client
3import os
5import requests
6from requests.adapters import HTTPAdapter
7from urllib3.util.retry import Retry
10def retry_session(headers, retries=4, backoff_factor=1, status_forcelist=(500, 502, 504), session=None, upload=False):
11 # We don't need to see every byte being uploaded in verbose mode
12 if os.environ.get('DEBUG_HTTP') and upload is False:
13 http_client.HTTPConnection.debuglevel = 5
14 else:
15 http_client.HTTPConnection.debuglevel = 0
17 requests.Session()
18 session = session or requests.Session()
19 retry = Retry(
20 total=retries,
21 read=retries,
22 status=retries,
23 connect=retries,
24 backoff_factor=backoff_factor,
25 status_forcelist=status_forcelist,
26 method_whitelist=['HEAD', 'TRACE', 'GET', 'PUT', 'OPTIONS', 'DELETE', 'POST']
27 )
28 adapter = HTTPAdapter(max_retries=retry)
29 session.mount('http://', adapter)
30 session.mount('https://', adapter)
31 session.headers.update(headers)
32 return session