Define:
import functools
import logging
logger = logging.getLogger(__name__)
def retry(round=3):
"""A simple retrying decorator"""
def decorator(func):
@functools.wraps(func)
def wrapper(*args, **kwargs):
err = None
for i in range(round):
logger.debug(f'trying {func.__name__} round {i+1}/{round} ...')
try:
return func(*args, **kwargs)
except Exception as e:
err = e
continue
raise err
return wrapper
return decoratorUsage:
import random
@retry(3)
def foo():
assert random.random() > 0.5