# instinct: 外部API(EDINET等)を呼ぶプロセスをpm2登録する前にレートリミット対策と自動リスタート抑制設定を確認する

外部API(EDINET等)を呼ぶプロセスをPM2に登録する前に、レートリミット対策と自動リスタート抑制設定を必ず確認する。investlab-dailyがEDINETから429エラーを受け取った際、watchdogが無限再起動ループに陥った実例から得た教訓。対策として、exponential backoffによるリトライ実装、PM2のmax_restarts・restart_delay設定、429発生時の一時停止ロジックを事前に組み込む必要がある。

## ポイント
- 外部APIがレートリミット(429)を返した場合、プロセスがクラッシュループに入りwatchdogが無限再起動する
- PM2登録前にmax_restarts・restart_delay・stop_exit_codesを設定し自動リスタート抑制を確認する
- スクリプト側にexponential backoffと429専用の長時間スリープ(例: 1時間待機)を実装する
- infra作業全般でこの確認を行い、特にEDINET・外部金融API等のレート制限が厳しいAPIに注意する

## 関連ページ
[[PM2 dangling process detection]] [[PM2サービス再起動前にinvestlab-dailyが停止している理由をログで確認する]]

## 関連概念(未作成)
`exponential backoff実装パターン` `PM2 ecosystem.config.js レートリミット対応設定テンプレート` `外部API利用時のcircuit breaker設計`