Saltar al contenido

Obtener Errno de Python Requests ConnectionError?

Tenemos el arreglo a esta preocupación, al menos eso creemos. Si presentas inquietudes puedes escribirlo en el apartado de comentarios, que sin dudarlo te ayudaremos

Solución:

Creo que puedes acceder usando e.args[0].reason.errno.

Esto probablemente esté documentado en alguna parte, pero generalmente cuando tengo que rastrear algo como esto, simplemente lo pruebo en la consola y busco un poco. (Uso IPython, por lo que es fácil hacer una inspección de pestañas, pero intentémoslo sin ella).

Primero, generemos un error usando

import requests
try:
    requests.get("http://not.a.real.url/really_not")
except requests.exceptions.ConnectionError as e:
    pass

que nos debe dar el error en e:

>>> e
ConnectionError(MaxRetryError("HTTPConnectionPool(host='not.a.real.url', port=80): Max retries exceeded with url: /really_not (Caused by : [Errno -2] Name or service not known)",),)

La información suele estar en args:

>>> e.args
(MaxRetryError("HTTPConnectionPool(host='not.a.real.url', port=80): Max retries exceeded with url: /really_not (Caused by : [Errno -2] Name or service not known)",),)
>>> e.args[0]
MaxRetryError("HTTPConnectionPool(host='not.a.real.url', port=80): Max retries exceeded with url: /really_not (Caused by : [Errno -2] Name or service not known)",)

Mirando hacia adentro, vemos:

>>> dir(e.args[0])
['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__',
 '__getitem__', '__getslice__', '__hash__', '__init__', '__module__', '__new__',
 '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setstate__', '__sizeof__',
 '__str__', '__subclasshook__', '__unicode__', '__weakref__', 'args', 'message', 'pool',
 'reason', 'url']

reason parece alentador:

>>> e.args[0].reason
gaierror(-2, 'Name or service not known')
>>> dir(e.args[0].reason)
['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__',
 '__getitem__', '__getslice__', '__hash__', '__init__', '__module__', '__new__',
 '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setstate__', '__sizeof__',
 '__str__', '__subclasshook__', '__unicode__', '__weakref__', 'args', 'errno', 'filename',
 'message', 'strerror']
>>> e.args[0].reason.errno
-2

Si conservas algún recelo o forma de refinar nuestro división eres capaz de ejecutar una apostilla y con gusto lo estudiaremos.

¡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 *