関数のタイムアウト
関数の実行時間が長すぎる場合、システムは関数を終了またはスロットルする措置を講じます。このタイムアウト時間のデフォルトは 60 秒ですが、関数をデプロイするときに延長または短縮できます。最大タイムアウト時間は、HTTP 関数の場合は 60 分(3,600 秒)、イベント ドリブン関数の場合は 9 分(540 秒)です。
関数の実行がタイムアウトに達すると、HTTP 504 エラー ステータスを含むレスポンス メッセージが呼び出し元にすぐに返されます。関数インスタンスはスロットルされる可能性がありますが、自動的に終了するまで動作を続けます。関数が生成するレスポンス メッセージはすべて破棄され、呼び出し元には返されません。
この動作により、予期しない副作用が発生する可能性があります。一般的な症状として、1 つのリクエストの作業とログが後続のリクエストに「リーク」されていることが表面化します。これを回避するには、次の方法で関数のタイムアウトを防ぎます。
- 予想される関数の実行時間より長いタイムアウトを設定する。
- 実行中の残り時間を追跡します。その後、クリーンアップを実行して早期にリターンします。
タイムアウト時間を設定する
関数のタイムアウト時間は、デプロイ時に Google Cloud CLI または Google Cloud コンソールで設定できます。
gcloud
gcloud CLI を使用してデプロイする場合は、--timeout
フラグを使用します。
gcloud functions deploy YOUR_FUNCTION_NAME --timeout=TIMEOUT_DURATION ...
Google Cloud CLI で既存のタイムアウト時間を編集するには、新しいタイムアウト値を持つ関数を再デプロイします。
コンソール
Google Cloud コンソールで関数を作成するときにタイムアウト時間を設定するには:
- Google Cloud コンソールで Cloud Run 関数の概要ページに移動します。
- [関数を作成] をクリックします。
- 関数の必須フィールドを入力します。
- ページの最後にある [ランタイム、ビルド...] セクションを開き、[ランタイム] タブをクリックします。
[タイムアウト] フィールドに秒数を入力します。
Google Cloud コンソールで既存のタイムアウト時間を編集するには、関数の概要ページで関数の名前をクリックして、詳細ページに移動します。詳細ページで [編集] をクリックし、[ランタイム、ビルド...] セクションを展開し、[ランタイム] タブをクリックします。このタブで、[タイムアウト] フィールドの値を直接編集できます。