in src/release_artifacts_resources/ios/cdk/cdk/credential_rotation/lambda_functions/src/utils/retry.py [0:0]
def retry(max_attempts=MAX_RETRY_ATTEMPTS, max_wait=MAX_RETRY_WAIT, log=True):
def logger(*msgs):
if log:
for msg in msgs:
print(msg)
def wrapper(func):
def retryer(*args, **kwargs):
for attempt in range(1, max_attempts + 1):
try:
return func(*args, **kwargs)
except Exception as ex:
logger("Exception caught: ", ex)
if attempt != max_attempts:
secs = random.uniform(0, min(max_wait, 2 ** attempt))
msecs = round(secs * 1000)
logger(f"Waiting for {msecs}ms")
sleep(secs)
else:
logger(f"{max_attempts} retries failed; aborting")
raise
return retryer
return wrapper