Cloudflare Workers: ランタイム更新時の grace period が最大 20 分に
Workers ランタイムの更新中、進行中の HTTP / ストリーム / WebSocket を切るまでの猶予が「最大 30 秒」から「最大 20 分」になった。長い応答やライブ接続が途中で切れにくくなるが、再接続設計は依然必須。
どんなときに使う?
- ストリーミング AI 応答や長時間 HTTP が、ランタイム更新のタイミングで突然切れる
- ライブ WebSocket セッションの切断が多すぎる
- 「更新時に何が起きるか」をアプリ設計に織り込みたいとき
やり方(挙動の理解)
- 新しいランタイムが ready になると、新規 HTTP リクエストは更新後のバージョンへ行く
- 旧バージョンのプロセスは新規受付を止め、進行中の仕事を drain する
- 各旧プロセスに 最大 20 分(以前は最大 30 秒)の grace period がある。終わると未完了リクエストや接続は終了させられる
- アプリ側は次を前提にする:
- WebSocket の再接続
- 中断したリクエストの安全なリトライ
- 再起動後の状態復元
注意点
- 「20 分保証」ではない。更新途中に巻き込まれた接続は残り時間だけ、ということもある
- WebSocket(Hibernation API 含む)は grace period 終了前に切れることがある。再接続ロジックは省略しない
- これは Cloudflare 側のランタイム更新の話であり、自分の Worker デプロイの段階的ロールアウト設定とは別