Как определить, не удалось ли повторить попытку с модулем повторных попыток Python? - PullRequest
2 голосов
/ 19 апреля 2019

Я использую библиотеку 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

...