Un ConnectionError se lanza en Python cuando una operación de red falla al establecer o mantener una conexión. En la biblioteca estándar es una clase base para subclases de OSError relacionadas con la red. La librería requests reutiliza este nombre para fallos de conexión HTTP.
Por qué ocurre
- •El servidor de destino no está en ejecución o no es accesible en el host y puerto especificados.
- •Un firewall o política de red está bloqueando la conexión.
- •La URL tiene un error tipográfico, puerto incorrecto o protocolo equivocado (http vs https).
- •La conexión se estableció pero se interrumpió inesperadamente a mitad de la solicitud por un timeout o reinicio del servidor.
Ejemplos
Código que causa el error
import requests
response = requests.get("http://localhost:8080/api/health")
print(response.status_code)Error en la terminal
Traceback (most recent call last): ... requests.exceptions.ConnectionError: HTTPConnectionPool(host='localhost', port=8080): Max retries exceeded with url: /api/health (Caused by NewConnectionError: Failed to establish a new connection: [Errno 111] Connection refused)
Cómo solucionarlo
Verifica que el servicio de destino esté en ejecución y sea accesible (intenta con curl o ping). Establece siempre un timeout al hacer solicitudes de red para evitar bloqueos indefinidos. Envuelve las llamadas de red en try/except e implementa una estrategia de reintento con retroceso exponencial para fallos transitorios.
Código corregido
import requests
from requests.exceptions import ConnectionError as RequestsConnectionError
try:
response = requests.get("http://localhost:8080/api/health", timeout=5)
print(response.status_code)
except RequestsConnectionError:
print("Service is unavailable. Check that it is running.")Errores relacionados
¿Listo para practicar tu inglés en el trabajo?
Lingua-e tiene ejercicios interactivos basados en conversaciones reales de developers: standups, code reviews, retrospectivas y más. Practica hasta que salga solo.
Prueba Lingua-e gratis