2011-01-13 28 views
1

システムが500を投げた場合でもhttpリクエストステータスを200に設定できますか? 実行中のタスクがあります。 GAEがhttp要求500を投げるとき、私はタスクを再試行されないようにタスクの最後に200に手動で設定したいと思う。Google App Engineリクエストステータス

+0

リトライをオフにすることはできますか? – Thilo

答えて

3

200ステータスコードを返すための典型的なパターンはtryexcept句の間、あなたのコードをラップすることです:

try: 
    do your stuff  
except: 
    logging.error("Something bad happened") 

この例では、あなたが望むかもしれないアプリケーションで常に200 status codeを返すすべての例外をキャッチキャッチする例外の適切なリストを追加する。特定の種類の一時的な例外の場合は、暗黙のうちにApp Engineにタスクを再試行するために500のエラーを発生させるのが正しいです。

EDIT:
として正しく提案、あなたはログにスタックトレースを含めることlogging.exceptionの代わりlogging.errorを使用する必要があります。

try: 
    do your stuff  
except: 
    logging.exception("Something bad happened") #It will log the stacktrace too 

これは、第2の利点を持っている、それはあなたがereporterサービスを有効にした後、電子メール経由でログレポートを受け取ることができます。

+1

logging.errorの代わりにlogging.exceptionを使用すると、スタックトレースが含まれます。 –

+0

分がある場合は、logging.exceptionを使用してスタックトレースをログに含めるコード例が大好きです。 –