2017-06-30 10 views
0

私は2つのAppengineプロジェクトAとBを持っています.AからBによって公開されたAPIを呼び出す必要があります(B上の)APIリクエストのserverside待ち時間は約300msです。私はurllib/urllib2をPythonでAを使用しています。これは、url fetchサービスを使用しているようで、リクエストを終了するのに約3秒かかります。別のAppengineプロジェクトを別のものから呼び出す:遅いUrlFetchService

私の質問は、これはappengineからappengineへの呼び出しであるため、これを高速化する方法はありますか? url-fetch-serviceなしで直接接続できるようにした方がはるかに高速だったはずです。

+0

これはいつもそうですか?最初のリクエストは、Bインスタンスがダウンしている場合に時間がかかることがあります。私は同じ要件を持っている、彼らはかなり高速です。 – Siva

+0

複数の呼び出しを試してみましたが、そのうちのいくつかは400〜600 msの範囲でより高速に処理されました。これははるかに扱いやすいものですが、インスタンスBが起動しているとは思われません。私はこれらの要求のいくつかを高速化している間に、それらのほとんどが遅くなっている間に何が何をしているのかよく分かりませすべてのサービス側のレイテンシは150ms〜300msの同じ範囲にあります。ここでの洞察は? – adarsh

+0

@Siva、あなたはurllib/urllib2を使用していますか? – adarsh

答えて

0

あなたのアプリケーションが両方ともGAE上で動作しているという事実を利用したいのであれば、同じアプリ内で別個のサービス/モジュールにする必要があります。それだけで、GAEは彼らが「友好的」であることを知り、多くの出口と入力要求処理を短時間で行うことができます。

GAEには、1つのアプリから送信されたパケットが別のGAEアプリに送信されているという手がかりがありません。それは、であると判断することができますが、追加処理を行うことで、すべてのアプリケーションの出力側を遅くすることができます。

入力側と同じ - GAEインフラストラクチャには、要求がアプリケーションに届くまでに多くのルーティングとセキュリティ処理が必要です。 GAEからのリクエストであっても、悪意のあるアプリからのリクエストであっても、一部のアプリでショートカットを作成できるかどうかを判断するために必要な余分な処理が、すべてのアプリのイングレス側を遅くします。

空港での接続サービスと似ています。フライトに接続している場合、到着ゲート61から出発ゲート62までの距離は、文字通りわずか数秒です。それ以外の場合は、保護されたゾーンを終了し、再度チェックインとセキュリティチェックを行ってください。ゲート間の距離だけではなく、さまざまな時間がかかります。

関連する問題