@@ -23,6 +23,17 @@ class SingularClient(object):
2323
2424 def __init__ (self , api_key ):
2525 self .api_key = api_key
26+ session = requests .Session ()
27+ retry = Retry (
28+ connect = 5 ,
29+ backoff_factor = 0.5 ,
30+ status_forcelist = (500 , 502 , 504 ),
31+ method_whitelist = ('GET' , 'POST' )
32+ )
33+ adapter = HTTPAdapter (max_retries = retry )
34+ session .mount ('http://' , adapter )
35+ session .mount ('https://' , adapter )
36+ self .session = session
2637
2738 def run_report (self , start_date , end_date ,
2839 format = Format .JSON ,
@@ -340,7 +351,7 @@ def __api_request(self, method, endpoint, **kwargs):
340351 headers = {"Authorization" : self .api_key ,
341352 'User-Agent' : 'Singular API Client v%s' % __version__ }
342353
343- response = requests .request (method , url , headers = headers , ** kwargs )
354+ response = self . session .request (method , url , headers = headers , ** kwargs )
344355
345356 logger .info ("%(method)s %(url)s, kwargs = %(kwargs)s --> code = %(code)s" %
346357 dict (method = method , url = url , kwargs = repr (kwargs ), code = response .status_code ))
0 commit comments