Повторить 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")