Saltar al contenido

Python solicita el manejo de excepciones

Enrique, parte de este gran equipo, nos ha hecho el favor de redactar este post porque controla a la perfección el tema.

Solución:

Asumiendo que lo hiciste import requestsusted quiere requests.ConnectionError. ConnectionError es una excepción definida por requests. Consulte la documentación de la API aquí.

Por lo tanto, el código debería ser:

try:
   requests.get('http://www.google.com')
except requests.ConnectionError:
   # handle the exception

Según la documentación, he agregado los siguientes puntos: –

  1. En el caso de un problema de red (conexión rechazada, por ejemplo, problema de Internet), las solicitudes generarán una excepción ConnectionError.

    try:
       requests.get('http://www.google.com')
    except requests.ConnectionError:
       # handle ConnectionError the exception
    
  2. En el caso de una rara respuesta HTTP no válida, las solicitudes generarán una excepción HTTPError. Response.raise_for_status() generará un HTTPError si la solicitud HTTP devolvió un código de estado fallido.

    try:
       r = requests.get('http://www.google.com/nowhere')
       r.raise_for_status()
    except requests.exceptions.HTTPError as err:
       #handle the HTTPError request here
    
  3. En el caso de tiempos fuera de la solicitud, se genera una excepción de tiempo de espera.

    Puede decirle a las solicitudes que dejen de esperar una respuesta después de un número determinado de segundos, con un argumento de tiempo de espera.

    requests.get('https://github.com/', timeout=0.001)
    # timeout is not a time limit on the entire response download; rather, 
    # an exception is raised if the server has not issued a response for
    # timeout seconds
    
  4. Todas las excepciones que las solicitudes generan explícitamente se heredan de solicitudes.excepciones.RequestException. Entonces, un controlador base puede verse como,

    try:
       r = requests.get(url)
    except requests.exceptions.RequestException as e:
       # handle all the errors here
    

En realidad, hay muchas más excepciones que requests.get() puede generar que simplemente ConnectionError. Aquí hay algunos que he visto en producción:

from requests import ReadTimeout, ConnectTimeout, HTTPError, Timeout, ConnectionError

try:
    r = requests.get(url, timeout=6.0)
except (ConnectTimeout, HTTPError, ReadTimeout, Timeout, ConnectionError):
    continue

Finalizando este artículo puedes encontrar las notas de otros administradores, tú asimismo tienes la habilidad mostrar el tuyo si te gusta.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *