11

非同期 URL フェッチに関するGoogle App Engine のドキュメントを読む:

アプリは、最大 10 個の同時非同期 URL フェッチ呼び出しを持つことができます

アプリケーションが一度に 10 を超える非同期フェッチを呼び出すとどうなりますか?
Google App Engine は例外を発生させますか、それとも処理待ちの残りの呼び出しを単にキューに入れますか?

4

4 に答える 4

9

うーん、Swizzec は正しくありません。簡単にテストできます:

rpc = []
for i in range(1,20):
    rpc.append(urlfetch.createrpc())
    urlfetch.make_fetch_call(rpc[-1],"http://stackoverflow.com/questions/3639855/what-happens-if-i-call-more-than-10-asynchronous-url-fetch")

for r in rpc:
    response = r.get_result().status_code

これは例外を返しません。実際、これは問題なく機能します。請求対象外のアプリケーションでは、結果が異なる場合があることに注意してください。

Swizec が報告しているのは、アプリケーションへの同時接続の最大数に関連する別の問題です。課金対象のアプリの場合、実質的な制限はありませんが、スケールアウトするだけです (1000ms ルールに従います)。

GAE は、リクエスト ハンドラがブロッキング URL フェッチを発行することを知る方法がないため、彼が見ている接続 500 は、彼のアプリが実際に行っていることとは関係ありません (平均リクエスト応答時間が 1000 ミリ秒を超える場合、これは単純化しすぎです)。 500 の可能性が増加します)。

于 2010-09-05T21:30:40.177 に答える
5

500 エラーが発生し始めます。静かに。

これらについては、すべてのリクエストの下でログを調べたときにのみわかります (エラーとしてリストされないでください)。「同時リクエストの制限に達したため、リクエストは中止されました」と表示されます。

したがって、多くの非同期呼び出しを行っている場合は、そのうちのいくつかを処理できることを確認してください。

于 2010-09-03T22:04:20.920 に答える
1

これがあなたの質問に答えているかどうかを確認してください:

http://groups.google.com/group/google-appengine/browse_thread/thread/1286139a70ef83c5?fwc=1

于 2010-10-09T08:40:49.463 に答える