Die Prüfung für Timeout-Fehler in python
Also ich habe eine ziemlich generische logging-Anweisung verwendet, nachdem eine Anforderung:
try:
r = requests.get(testUrl, timeout=10.0)
except Exception, err:
logger.error({"message": err.message})
Dies funktioniert gut für alles, was ich habe geworfen, außer TimeoutError
. Bei einer Zeitüberschreitung für die Anfrage des err ich wieder komme ist ein Tupel, der es versucht und scheitert, zu serialisieren.
Meine Frage ist, wie fange ich nur diese eine Art von Fehler? Für den Anfang TimeoutError
ist nicht etwas, was ich Zugriff haben. Ich habe versucht, indem from exceptions import *
aber mit kein Glück. Ich habe auch versucht den Import OSError
weil die docs sagen TimeoutError
ist eine Unterklasse, aber ich war nicht auf TimeoutError
nach dem Import OSError
.
Plane ich entweder meine Liste von Ausnahmen in der Reihenfolge:
except TimeoutError, err:
#handle this specific error
except Exception, err:
#handle all other errors
oder einfach nur überprüfen, für Typ:
except Exception, err:
if isinstance(err, TimeoutError):
#handle specific error
#handle all other errors
Python 2.7.3 & Django 1.5
TimeoutError
ist eine benutzerdefinierte Ausnahme bereitgestellt von die requests
- Paket.Ahh, ich dachte, es war der, auf die hier verwiesen wird: docs.python.org/3/library/exceptions.html#TimeoutError
Wenn Sie Zweifel haben, drucken Sie die
.__module__
Attribut eine Ausnahme.Ich kam hier für
TimeoutError
aus concurrent.futures
, die nur concurrent.futures.TimeoutError
.Es ist ein bulletin in Python 3, aber nicht in Python 2.
InformationsquelleAutor diplosaurus | 2014-06-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie behandeln
- Anfragen.Timeout
Ausnahme:Beispiel:
http://httpbin.org/delay
route, die Antworten nach einer konfigurierbaren Verzögerung.wow, schön, danke für den Tipp!
InformationsquelleAutor alecxe