3939# Module Constants
4040DEFAULT_SINGLE_REQUEST_TIMEOUT = 20.0
4141DEFAULT_RATE_LIMIT_TIMEOUT = 60.0
42- RATE_LIMIT_EXCEEDED_RESPONSE_CODE = 429
42+ RATE_LIMIT_RESPONSE_CODE = 429
43+ RATE_LIMIT_LOG_MESSAGE = "Received a [%s] rate-limit response code."
4344
4445
4546# Helper Functions
@@ -251,7 +252,6 @@ def request(self, method, relative_url, erc, **kwargs):
251252 kwargs .setdefault ('timeout' , self .single_request_timeout )
252253
253254 start_time = time .time ()
254- finish_time = start_time + self .rate_limit_timeout
255255
256256 while True :
257257 # Make the HTTP request to the API endpoint
@@ -264,23 +264,25 @@ def request(self, method, relative_url, erc, **kwargs):
264264 except SparkApiError as e :
265265
266266 # Catch rate-limit errors
267- if e .response_code == RATE_LIMIT_EXCEEDED_RESPONSE_CODE \
267+ if e .response_code == RATE_LIMIT_RESPONSE_CODE \
268268 and response .headers .get ('Retry-After' ):
269269
270- logger .debug ("Received a [%s] rate limit response. "
271- "Attempting to retry." , e .response_code )
270+ logger .debug (RATE_LIMIT_LOG_MESSAGE ,
271+ e .response_code )
272272
273- rate_limit_wait = response .headers ['Retry-After' ]
273+ rate_limit_wait = float ( response .headers ['Retry-After' ])
274274
275275 if self .rate_limit_timeout is None :
276276 # Retry indefinitely
277- logger .debug ("Waiting {:0.3f} seconds. "
278- "rate_limit_timeout is None; "
277+ logger .debug ("Rate-limiting; waiting {:0.3f} seconds. "
278+ "rate_limit_timeout is None. "
279279 "will retry indefinitely."
280280 "" .format (rate_limit_wait ))
281281 time .sleep (rate_limit_wait )
282282 continue
283- elif time .time () + rate_limit_wait < finish_time :
283+
284+ elif (time .time () + rate_limit_wait
285+ < start_time + self .rate_limit_timeout ):
284286 # Retry if doing so will not exceed the finish time
285287 logger .debug ("Waiting {:0.3f} seconds. "
286288 "rate_limit_timeout is {:0.3f} seconds, "
@@ -291,6 +293,7 @@ def request(self, method, relative_url, erc, **kwargs):
291293 finish_time - time .time ()))
292294 time .sleep (rate_limit_wait )
293295 continue
296+
294297 else :
295298 # Time exceeded re-raise the rate limit SparkApiError
296299 raise
@@ -301,6 +304,8 @@ def request(self, method, relative_url, erc, **kwargs):
301304
302305 else :
303306 # No errors - return the response object
307+ logger .debug ("Response Code [%s]: %s" ,
308+ response .status_code , response .url )
304309 return response
305310
306311 def get (self , url , params = None , ** kwargs ):
0 commit comments