2009-05-29 8 views

答えて

3

要求ハンドラは、典型的には30秒の周りに、要求への応答を生成して返すために時間の限られた量を有しています。締め切りに達すると、要求ハンドラは中断されます。

Pythonランタイム環境では、DeadlineExceededErrorをパッケージgoogle.appengine.runtimeから呼び出すことで、要求ハンドラに割り込みします。要求ハンドラがこの例外を捕捉しない場合、すべてのキャッチされていない例外と同様に、実行時環境はHTTP 500サーバエラーをクライアントに返します。

リクエストハンドラはこのエラーをキャッチしてレスポンスをカスタマイズできます。実行時環境では、カスタム応答を準備するために例外を発生させた後、要求ハンドラに少し時間がかかります(1秒未満)。

ハンドラが応答を返さなかった場合、または2番目の期限までに例外が発生した場合、ハンドラは終了し、デフォルトのエラー応答が返されます。

リクエストには30秒の応答時間がかかることがありますが、App Engineは短期間のリクエスト(通常は数百ミリ秒かかるアプリケーション)に最適化されています。効率の良いアプリは大部分のリクエストに対して迅速に対応します。 App Engineのインフラストラクチャではうまく拡張できないアプリです。

ザ・データストアは、独自のTimeOut exception

google.appengine.ext.dbパッケージには、次の例外クラスを提供しています

[...]データストア操作を超えると

exception Timeout()
を上げますデータストア操作に許可される最大時間。

+4

まず捕捉可能な例外がスローされ、妥当な間隔の後に捕捉不能な例外がスローされます。 –

+0

あなたは正しく、固定されています.. – dbr

7

データストア呼び出しの場合、例外はgoogle.appengine.ext.db.Timeoutです。合計(ウォールクロック)の時間が超過した場合は、例外はgoogle.appengine.runtime.DeadlineExceededErrorです。 DeadlineExceededエラーは「ソフト」に1回スローされます。その時点で、応答を返して終了する時間が短くなります。もしあなたがそうしなければ、それは再び投げられ、捕まえられず、あなたのスクリプトは無意識に終了します。

関連する問題