modules/python/utils/retries.py (21 lines of code) (raw):
import time
import traceback
from utils.logger_config import get_logger, setup_logging
# Configure logging
setup_logging()
logger = get_logger(__name__)
def execute_with_retries(func, *args, max_retries:int=2, backoff_time:int=10, **kwargs):
retry_count = 0
while retry_count <= max_retries:
try:
return func(*args, **kwargs)
except Exception as e:
logger.error(f"Attempt {retry_count + 1} failed with error: {e}")
traceback.print_exc()
if retry_count < max_retries:
retry_count += 1
sleep_time = backoff_time * retry_count
logger.info(f"Retrying in {sleep_time} seconds...")
time.sleep(sleep_time)
else:
raise
return None