問題:
応答に60秒以上かかるHttps関数を使用しています(これはユースケースに必要な要件であり、非同期実行に置き換えることはできません)。関数がタイムアウトするように設定しました。 75秒。ChromeまたはPostmanから直接実行するなど、
https://us-central1-<project-id>.cloudfunctions.net/test
。
また、すべてのリクエストを
/api
に書き換えるようにホスティングプロキシを構成しました。これらの機能に。ただし、これらの「ホスティング」エンドポイントを介して同一のリクエストを送信する場合(例:
https://<project-id>.firebaseapp.com/api/test
)、ChromeとPostmanの両方で、わずか60秒後に504(ゲートウェイタイムアウト)エラーを受け取ります。これは、ホスティングプロキシ自体がタイムアウトすることを示しています。前 機能成功する (どれ Firebase Consoleログに示されているように、引き続き発生します)。
ホスティングタイムアウトをより高い値(120秒など)に設定することはできますか?
考えられる解決策/回避策:-
Connection: keep-alive
を設定しようとしましたおよびKeep-Alive: timeout=120
クライアントリクエストのヘッダー。ただし、これはホスティングプロキシに影響を与えないようです。または多分私達はそれを正しくしていない。 - 現時点での唯一の回避策は、書き換えルールを使用せず、代わりに「直接」URL(
cloudfunctions.net
から) )。ただし、ブラウザクライアントでCORSを処理し、さらに重要なことには、URL解決スキームと関数のコードの構成を変更する必要があります(たとえば、/api/some/path/to/test
などの各関数に長いパスを使用することはできません) 、そのパスの最初の部分のみ(api
など) 、関数名と見なされます)。
ありがとう!
永続的な接続を維持するような方法で関数を書くことができます:
https://firebase.google.com/docs/functions/networking#https_requests