Я использую библиотеку Python retrying
для ожидания и повторной загрузки, когда сервер защищен от DDoS, но у меня вопрос: как я могу выдать исключение, если все повторные попытки не удаются?
В моем коде download(symbol)
функция может вызвать исключение DDoSProtection
.Если это так, я хотел бы начать повторную попытку, и если stop_max_attempt_number
повторная попытка не удалась, вызовите исключение downloadError()
.
def retry_if_ddospro_error(exception):
"""Return True if we should retry (in this case when it's an DDoSProtection), False otherwise"""
return isinstance(exception, DDoSProtection)
@retry(retry_on_exception = retry_if_ddospro_error, stop_max_attempt_number = 3, wait_fixed=3000)
def download (symbol):
ls = exchange.fetch_ohlcv(symbol) # Might raise DDoSProtection
# RETRY
if retry_fail:
# RAISE new exception in order to log error into database
raise downloadError('Exchange is in DDoS protection')
РЕДАКТИРОВАТЬ: удаление try
except
в моем примере.
Рекомендации: https://pypi.python.org/pypi/retrying