1. Задача: Напиши декоратор функции, который делает retry в случае ошибки.
def retry(retry_count: int, delay: int, exceptions: Tuple[Type[Exception], ...]):
@functools.wraps(func)
def decorator(func):
def wrapper(*args, **kwargs):
for i in range(retry_count):
try:
return func(*args, **kwargs)
except exceptions as err:
for exception in exceptions:
if isinstance(err, exception) and i == (retry_count - 1):
raise err
time.sleep(delay)
return
return wrapper
return decoratorОтвет
Приведено решение с использованием декоратора и цикла для повторных попыток выполнения…