in migration/src/common.py [0:0]
def retry_upto(max_retry: int, interval: float, logger: logging.Logger):
def retry(func):
@functools.wraps(func)
def _retry(*args, **kwargs):
retry = 0
while retry < max_retry:
try:
return func(*args, **kwargs)
except Exception as e:
retry += 1
logger.warning(f"Exception raised during function call {func}. error={str(e)} (retry={retry})")
time.sleep(interval)
continue
if retry == max_retry:
raise MaxRetryLimitExceedException()
return None
return _retry
return retry