При какой HTTP ошибке можно повторять запрос

Python Senior Без компании
При какой HTTP ошибке можно повторять запрос
Ответы
Повторять запрос можно при **5xx (серверные ошибки)** и некоторых **4xx (клиентские ошибки)**. - **5xx (Server Errors)**: - `500 (Internal Server Error)` - `502 (Bad Gateway)` - `503 (Service Unavailable)` - `504 (Gateway Timeout)` Эти ошибки часто временные, и повторный запрос может сработать. - **4xx (Client Errors)**: - `429 (Too Many Requests)` – если Retry-After в заголовках. - `408 (Request Timeout)` – клиент не отправил запрос вовремя. **Пример с экспоненциальной задержкой:** ``` import requests import time def make_request(url, max_retries=3): for attempt in range(max_retries): try: response = requests.get(url) if response.status_code < 500: return response except requests.exceptions.RequestException: pass delay = (2 ** attempt) * 0.1 # exponential backoff time.sleep(delay) return None ``` **Нельзя повторять:** - `400 (Bad Request)` – клиент отправил невалидный запрос. - `401 (Unauthorized)` – без исправления авторизации. - `403 (Forbidden)` – доступ запрещен. - `404 (Not Found)` – ресурс не существует.