Kann der HTTP-Anforderungsstatus auch dann auf 200 gesetzt werden, wenn das System 500 ausgibt? Ich habe eine Aufgabe, die ausgeführt wird. Wenn GAE die http-Anforderung 500 auslöst, möchte ich sie am Ende der Aufgabe manuell auf 200 setzen, um zu verhindern, dass die Aufgabe wiederholt wird.Google App Engine-Anforderungsstatus
Antwort
Das typische Muster ein 200 Statuscode zurück Code zwischen try
und except
Klauseln zu wickeln ist:
try:
do your stuff
except:
logging.error("Something bad happened")
diesem Beispiel wird ein in der Anwendung fangen die Ausnahmen alle Rückkehr immer 200 status code
, möchten Sie vielleicht um eine richtige Liste von zu fangenden Ausnahmen hinzuzufügen; für bestimmte Typen von Transienten Ausnahmen ist es richtig, einen Fehler 500 zu erhöhen, die App Engine implizit sagen, die Aufgabe erneut zu versuchen.
EDIT:
Wie richtig vorgeschlagen, sollten Sie logging.exception
statt logging.error
verwenden, um die Stacktrace im Protokoll aufzunehmen.
try:
do your stuff
except:
logging.exception("Something bad happened") #It will log the stacktrace too
Dies hat einen zweiten Vorteil, ermöglicht es Ihnen Protokollberichte per E-Mail nach der Aktivierung der ereporter Dienst zu empfangen.
Verwenden Sie logging.exception anstelle von logging.error, also wird der Stacktrace eingeschlossen. –
Wenn Sie eine Minute haben, würde ich gerne ein Codebeispiel der Verwendung von logging.exception, um den Stacktrace in das Protokoll aufzunehmen. –
Können Sie die Versuche nicht einfach abstellen? – Thilo