diff --git a/ciscosparkapi/exceptions.py b/ciscosparkapi/exceptions.py index eb1ce06..382f0cf 100644 --- a/ciscosparkapi/exceptions.py +++ b/ciscosparkapi/exceptions.py @@ -140,4 +140,12 @@ def __init__(self, response): class SparkRateLimitError(SparkApiError): """Cisco Spark Rate-Limit exceeded Error.""" - pass + + def __init__(self, response): + assert isinstance(response, requests.Response) + + # Set a sane default just incase Spark lets us down + self.retry_after = 200 + + if 'Retry-After' in response.headers.keys(): + self.retry_after = int(response.headers['Retry-After']) diff --git a/ciscosparkapi/restsession.py b/ciscosparkapi/restsession.py index b89bd46..06ce380 100644 --- a/ciscosparkapi/restsession.py +++ b/ciscosparkapi/restsession.py @@ -281,7 +281,7 @@ def request(self, method, url, erc, **kwargs): # Wait and retry if automatic rate-limit handling is enabled if self.wait_on_rate_limit and e.retry_after: logger.info("Received rate-limit message; " - "waiting {:0.0f} seconds." + "waiting {0} seconds." "".format(e.retry_after)) time.sleep(e.retry_after) continue