Coverage for pyriandx/utils.py: 35%

17 statements  

« 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 

4 

5import requests 

6from requests.adapters import HTTPAdapter 

7from urllib3.util.retry import Retry 

8 

9 

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 

16 

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