def retry(max_attempts=3, delay=1):
def decorator(func):
@wraps(func)
def wrapper(*args, **kwargs):
attempts = 0
while attempts < max_attempts:
try:
return func(*args, **kwargs)
except Exception as e:
attempts += 1
if attempts == max_attempts:
raise
time.sleep(delay)
logger.warning(f"Попытка {attempts} не удалась: {e}")
return wrapper
return decorator
@retry(max_attempts=5, delay=2)
def fetch_data(url):
response = requests.get(url)
response.raise_for_status()
return response.json()
def retry(max_attempts=3, delay=1):
def decorator(func):
@wraps(func)
def wrapper(*args, **kwargs):
attempts = 0
while attempts < max_attempts:
try:
return func(*args, **kwargs)
except Exception as e:
attempts += 1
if attempts == max_attempts:
raise
time.sleep(delay)
logger.warning(f"Попытка {attempts} не удалась: {e}")
return wrapper
return decorator
@retry(max_attempts=5, delay=2)
def fetch_data(url):
response = requests.get(url)
response.raise_for_status()
return response.json()