Je capture et Python d'impression Les demandes ConnectionErrors bien avec ceci:Obtenir Errno à partir de demandes Python ConnectionError?
except requests.exceptions.ConnectionError as e:
logger.warning(str(e.message))
Il imprime des messages tels que:
HTTPSConnectionPool(host='10.100.24.16', port=443): Max retries exceeded with url: /api/datastores/06651841-bbdb-472a-bde2-689d8cb8da19 (Caused by <class 'socket.error'>: [Errno 61] Connection refused)
et
HTTPSConnectionPool(host='10.100.24.16', port=443): Max retries exceeded with url: /api/datastores/06651841-bbdb-472a-bde2-689d8cb8da19 (Caused by <class 'socket.error'>: [Errno 65] No route to host)
Et bien d'autres. Ce que je me demande, c'est quel est le meilleur, le plus Pythonic, moyen d'obtenir cette errno qui s'affiche dans le message? Je voudrais avoir un système fiable pour attraper les problèmes et offrir un message d'erreur utile et pertinent à l'utilisateur que possible. Pour autant que je sache, ConnectionError est un défunt indirect de BaseException, sans nouvelles propriétés ou méthodes ajoutées au-delà de ce qu'offre BaseException. J'hésite à utiliser simplement regex car il me semble que je risque de supposer que tous les messages d'erreur sont formatés de la même manière dans toutes les localités.
+1: Très bien fait! Merci beaucoup! Je suis allé jusqu'à dir (e) et e.args, mais je m'étais arrêté à ce point en prenant les éléments d'e.args pour des chaînes que je devais utiliser regex pour extraire l'information que je voulais. – ArtOfWarfare
L'utilisation d'une fausse URL était également une bonne idée pour générer des erreurs. J'avais utilisé de vraies URL mais avec mon Internet fermé ... il était gênant d'avoir à aller et venir entre générer les erreurs et les rechercher. – ArtOfWarfare
oh mon seigneur - merci merci - cette erreur m'a conduit batty! –