Correctly raise exceptions for ratelimitng. Ratelimit on 401

This commit is contained in:
Erik Johnston 2017-02-01 15:42:19 +00:00
parent 6d6591880e
commit df4ecff5a9
2 changed files with 6 additions and 4 deletions

View File

@ -504,7 +504,7 @@ class TransactionQueue(object):
code = e.code code = e.code
response = e.response response = e.response
if e.code == 429 or 500 <= e.code: if e.code in (401, 404, 429) or 500 <= e.code:
logger.info( logger.info(
"TX [%s] {%s} got %d response", "TX [%s] {%s} got %d response",
destination, txn_id, code destination, txn_id, code

View File

@ -129,11 +129,13 @@ class RetryDestinationLimiter(object):
# APIs may expect to never received e.g. a 404. It's important to # APIs may expect to never received e.g. a 404. It's important to
# handle 404 as some remote servers will return a 404 when the HS # handle 404 as some remote servers will return a 404 when the HS
# has been decommissioned. # has been decommissioned.
if exc_val.code == 404 and self.backoff_on_404: # If we get a 401, then we should probably back off since they
valid_err_code = False # won't accept our requests for at least a while.
elif exc_val.code == 429:
# 429 is us being aggresively rate limited, so lets rate limit # 429 is us being aggresively rate limited, so lets rate limit
# ourselves. # ourselves.
if exc_val.code == 404 and self.backoff_on_404:
valid_err_code = False
elif exc_val.code in (401, 429):
valid_err_code = False valid_err_code = False
elif exc_val.code < 500: elif exc_val.code < 500:
valid_err_code = True valid_err_code = True