При какой 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)` – ресурс не существует.