Повторить Python изменить поведение

У меня есть функция, украшенная @retry (из библиотеки повторов), я хочу изменить поведение функции, чтобы регистрировать больше, если это повторная попытка - есть ли встроенный способ справиться с этим?

т.е. как то так:

from retrying import retry

@retry
def foo():
    if retry:
        log('retrying')
    throw Exception

2 ответа

Вы можете попробовать это, если не хотите переходить к упорству.

      from retrying import retry

def is_retry_exception(exception):
    if isinstance(exception, Exception):
        log("retry")
        retry True
    retry False

def is_retry_result(result):
    if something:
        log("retry")
        retry True
    retry False  

@retry(retry_on_exception=is_retry_exception, retry_on_result=is_retry_result)
def foo():
    if retry:
        log('retrying')
    throw Exception

Эта библиотека не обновляется. Вы можете использовать упорство.

документ: https://tenacity.readthedocs.io/en/latest/

Вы можете войти до или после

import logging

logging.basicConfig(stream=sys.stderr, level=logging.DEBUG)

logger = logging.getLogger(__name__)

@retry(stop=stop_after_attempt(3), before=before_log(logger, logging.DEBUG))
def raise_my_exception():
    raise MyException("Fail")
Другие вопросы по тегам