2011-01-13 20 views
1

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

+0

Können Sie die Versuche nicht einfach abstellen? – Thilo

Antwort

3

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.

+1

Verwenden Sie logging.exception anstelle von logging.error, also wird der Stacktrace eingeschlossen. –

+0

Wenn Sie eine Minute haben, würde ich gerne ein Codebeispiel der Verwendung von logging.exception, um den Stacktrace in das Protokoll aufzunehmen. –