def retry_on_failure(max_attempts=3, delay=1):
def decorator(func):
def wrapper(*args, **kwargs):
for attempt in range(max_attempts):
try:
return func(*args, **kwargs)
except Exception as e:
if attempt == max_attempts - 1:
raise e
time.sleep(delay)
return None
return wrapper
return decorator
@retry_on_failure(max_attempts=5, delay=2)
def fetch_data():
return requests.get("https://api.example.com/data").json()
def retry_on_failure(max_attempts=3, delay=1):
def decorator(func):
def wrapper(*args, **kwargs):
for attempt in range(max_attempts):
try:
return func(*args, **kwargs)
except Exception as e:
if attempt == max_attempts - 1:
raise e
time.sleep(delay)
return None
return wrapper
return decorator
@retry_on_failure(max_attempts=5, delay=2)
def fetch_data():
return requests.get("https://api.example.com/data").json()