Cloud Functions for Firebase を使用して、次のことを行います。
- api.ai からパラメーターを受け取る
- サードパーティの API を呼び出して、
- api.ai に返信します。
サードパーティ API への私の呼び出しはリクエスト Node.js モジュールgetInfoFromApi()
を使用し、index.jsの関数 ( ) 内にラップされています。
私が抱えている問題は、セカンダリ関数呼び出しの実行に一貫して 15 ~ 20 秒かかることです。注: クラウド機能自体は、一貫して 400 ミリ秒の範囲で実行を完了します。
コンソールに簡単なコメントを記録することで、関数が開始されたとき、2 次関数が呼び出されたとき、およびサードパーティからの応答を受け取ったときにわかるので、何が起こっているのかがわかると思います。
大まかに、タイミングは次のようになります。
- 0: クラウド関数が初期化されます
- 400 ミリ秒: クラウド機能が完了する
- 16 秒:
getInfoFromApi()
関数が呼び出されます (!) - 17 秒: サードパーティ API が結果を返す
私の質問:
- 二次関数の呼び出しが遅れている明らかな理由はありますか? これは、コールド スタートの問題が原因ではないようです。これは、クラウド機能がすぐに有効になり、呼び出しを繰り返した後でも遅延が一貫しているためです。
- 「リクエスト」ノード モジュールの使用が問題の原因ですか? クラウド機能からの HTTP リクエストを作成/管理するためのより良いモジュールはありますか?
ここで index.js の簡略化された Gist を確認できます: https://gist.github.com/anonymous/7e00420cf2623b33b80d88880be04f65
これは、タイミングの例を示す Firebase コンソールのグラブです。注: 理解を助けるために上記のコードを簡略化したため、出力は上記のコードとは少し異なります。