import time, random
def запрос_с_backoff(payload, api_key, max_retries=5):
headers = {"Authorization": f"Bearer {api_key}"}
retryable = {429, 500, 502, 503, 504}
for attempt in range(max_retries):
r = requests.post(
"https://elumenta.ru/api/v2/generate",
headers=headers, json=payload
)
if r.status_code not in retryable:
return r.json()
wait = (2 ** attempt) + random.uniform(0, 1)
print(f"Попытка {attempt + 1}/{max_retries}, ожидание {wait:.1f}с")
time.sleep(wait)
raise Exception(f"Не удалось выполнить запрос после {max_retries} попыток")