@@ -101,6 +101,7 @@ def request(self,
101101 username = None ,
102102 password = None ,
103103 schema = None ,
104+ backoff_factor = 0 ,
104105 ** kwargs ):
105106 """Send a request
106107
@@ -130,7 +131,7 @@ def request(self,
130131 headers ['Content-Type' ] = 'application/json'
131132 kwargs ['assert_same_host' ] = False
132133 kwargs ['redirect' ] = False
133- kwargs ['retries' ] = Retry (read = 0 )
134+ kwargs ['retries' ] = Retry (read = 0 , backoff_factor = backoff_factor )
134135 return self .pool .urlopen (
135136 method ,
136137 path ,
@@ -274,6 +275,7 @@ class Client(object):
274275 def __init__ (self ,
275276 servers = None ,
276277 timeout = None ,
278+ backoff_factor = 0 ,
277279 verify_ssl_cert = False ,
278280 ca_cert = None ,
279281 error_trace = False ,
@@ -290,6 +292,7 @@ def __init__(self,
290292 self ._inactive_servers = []
291293 pool_kw = _pool_kw_args (verify_ssl_cert , ca_cert , cert_file , key_file )
292294 pool_kw ['timeout' ] = timeout
295+ self .backoff_factor = backoff_factor
293296 self .server_pool = {}
294297 self ._update_server_pool (servers , ** pool_kw )
295298 self ._pool_kw = pool_kw
@@ -403,7 +406,14 @@ def _request(self, method, path, server=None, **kwargs):
403406 next_server = server or self ._get_server ()
404407 try :
405408 response = self .server_pool [next_server ].request (
406- method , path , username = self .username , password = self .password , schema = self .schema , ** kwargs )
409+ method ,
410+ path ,
411+ username = self .username ,
412+ password = self .password ,
413+ backoff_factor = self .backoff_factor ,
414+ schema = self .schema ,
415+ ** kwargs
416+ )
407417 redirect_location = response .get_redirect_location ()
408418 if redirect_location and 300 <= response .status <= 308 :
409419 redirect_server = _server_url (redirect_location )
0 commit comments