Sto cattura e richieste di stampa Python ConnectionErrors bene con proprio questo:Ottieni Errno dalle richieste Python ConnectionError?
except requests.exceptions.ConnectionError as e:
logger.warning(str(e.message))
esso stampa messaggi come:
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)
e
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)
E molti altri. Quello che mi chiedo è, qual è il modo migliore, più Pythoniano, per ottenere quella errno che appare nel messaggio? Mi piacerebbe avere un sistema affidabile per cogliere i problemi e offrire all'utente un messaggio di errore utile e pertinente il più possibile. Per quanto ne so, ConnectionError è un decedent indiretto di BaseException, senza nuove proprietà o metodi aggiunti oltre a quello che offre BaseException. Sono riluttante a usare semplicemente regex perché mi sembra che corro il rischio di assumere che tutti i messaggi di errore siano formattati allo stesso modo in tutte le località.
+1: molto ben fatto! Grazie mille! Ero arrivato a dir (e) ed e.args, ma mi ero fermato a quel punto scambiando gli elementi di e.args in stringhe che avrei dovuto usare regex per estrarre le informazioni che volevo. – ArtOfWarfare
L'uso di un URL falso è stato anche un bel tocco per generare errori. Stavo usando URL reali ma con il mio internet spento ... era scomodo dover andare avanti e indietro tra generare gli errori e ricercarli. – ArtOfWarfare
oh mio signore - grazie grazie - questo errore mi ha fatto impazzire! –