関数のタイムアウト

関数の実行時間が長すぎる場合、システムは関数を終了またはスロットルする措置を講じます。このタイムアウト時間のデフォルトは 60 秒ですが、関数をデプロイするときに延長または短縮できます。最大タイムアウト時間は、HTTP 関数の場合は 60 分(3,600 秒)、イベント ドリブン関数の場合は 9 分(540 秒)です。

関数の実行がタイムアウトに達すると、HTTP 504 エラー ステータスを含むレスポンス メッセージが呼び出し元にすぐに返されます。関数インスタンスはスロットルされる可能性がありますが、自動的に終了するまで動作を続けます。関数が生成するレスポンス メッセージはすべて破棄され、呼び出し元には返されません。

この動作により、予期しない問題が発生する可能性があります。一般的な症状として、1 つのリクエストの作業とログが後続のリクエストに「リーク」されていることが表面化します。これを回避するには、次の方法で関数のタイムアウトを防ぎます。

  1. 予想される関数の実行時間より長いタイムアウトを設定します。
  2. 実行中の残り時間を追跡します。その後、クリーンアップを実行して早期にリターンします。

タイムアウト期間を設定する

Google Cloud CLI でデプロイ時に関数のタイムアウト期間を設定するには、--timeout フラグを使用します。

gcloud functions deploy YOUR_FUNCTION_NAME --timeout=TIMEOUT_DURATION ...

Google Cloud CLI で既存のタイムアウト期間を編集するには、新しいタイムアウト値を持つ関数を再デプロイします。