Что такое ошибка ConnectionError?
Ошибка ConnectionError: Failed to establish connection
возникает, когда Python не может установить сетевое соединение с удаленным сервером или сервисом.
Причины возникновения
- Сервер недоступен или не отвечает
- Проблемы с сетевым подключением
- Неправильный URL или endpoint
- Блокировка файрволом
- Проблемы с DNS
- Превышение таймаута
Как отладить ошибку
- Проверь сетевое подключение - используй ping или curl
- Проверь URL/endpoint - убедись в правильности адреса
- Проверь настройки файрвола - убедись в отсутствии блокировки
- Протестируй с curl или Postman - для изоляции проблемы
Как исправить ошибку
1. Добавь логику повторных попыток с экспоненциальной задержкой
1import requests
2import time
3from requests.adapters import HTTPAdapter
4from urllib3.util.retry import Retry
5
6session = requests.Session()
7retry = Retry(
8 total=3,
9 backoff_factor=0.5,
10 status_forcelist=[500, 502, 503, 504]
11)
12adapter = HTTPAdapter(max_retries=retry)
13session.mount('http://', adapter)
14session.mount('https://', adapter)
15
16try:
17 response = session.get('https://api.example.com')
18except requests.ConnectionError:
19 print("Не удалось подключиться к серверу")
2. Проверь конфигурацию сети
3. Используй connection pooling
4. Правильно обрабатывай таймауты
Как мониторить подобные ошибки
- Настрой мониторинг доступности сервисов
- Используй health checks для проверки состояния
- Отслеживай частоту и паттерны ошибок
- Используй инструменты мониторинга (Prometheus, Grafana, ELK stack)
FAQ
В: Как проверить доступность сервера?
О: Используй ping
, telnet
или curl
для проверки доступности.
В: Что делать при проблемах с DNS?
О: Проверь настройки DNS, используй IP-адрес напрямую или настрой альтернативные DNS-серверы.
В: Как настроить прокси для запросов?
О: Используй параметр proxies
в requests: requests.get(url, proxies={'http': 'proxy_url'})
.
Лучшие практики
- Всегда используй таймауты для сетевых запросов
- Реализуй логику повторных попыток с экспоненциальной задержкой
- Используй connection pooling для оптимизации
- Обрабатывай различные типы сетевых ошибок
- Мониторь доступность внешних сервисов