※本ページにはプロモーション(広告)が含まれています
短時間に過剰なリクエストを送ったためサーバーに拒否された状態。レート制限到達を示すHTTPエラーで、待機または間隔調整で解消する。
詳しい解説
429 Too Many Requestsは、短時間に大量のリクエストを送信してサーバーのレート制限(Rate Limit)に達した場合に返されるHTTPステータスコードです。APIサービス・SNS・大規模Webサイトでは、サービス安定性とDoS攻撃対策のため、IPアドレスやユーザーアカウント単位でリクエスト数に上限を設けています。その上限を超えたときに429が返されます。
主な発生シチュエーションは次の通り。①API利用時の過剰リクエスト: 無料プランのAPI呼び出し上限超過(例: OpenAI APIが分間60回超えて429)。②スクレイピングの検知: 自動巡回ツールが同一サイトに短時間で大量アクセス。③ブラウザ拡張機能の暴走: 広告ブロッカーやSEO解析ツールが背景で連続リクエスト。④同一IPからの複数ユーザー: オフィスやカフェで大勢が同時に同じサービスを使用。⑤Cloudflareなどのセキュリティ判定: 挙動がボットと判定された。
対処手順は次の順。第1段階: 応答ヘッダーの`Retry-After`を確認し、指定秒数待機してから再試行。第2段階: ヘッダーがなければ1分〜5分待機して再試行。第3段階: APIキーがある場合はリクエスト間隔を空ける実装に修正(例: 1秒に1回以下)。第4段階: プランをアップグレードして上限を引き上げる。第5段階: CloudflareのCAPTCHA判定なら、ブラウザで該当サイトにアクセスし認証を通す。
予防策として、APIクライアントには指数バックオフ(最初1秒、次2秒、次4秒と倍々に待機)を実装する、キャッシュで同じレスポンスの再取得を避ける、バルクエンドポイントがあれば1リクエストで複数件処理する、といった工夫が有効です。
個人開発者がOpenAI APIで一括翻訳スクリプトを動かし始めた5分後、突然『429 Too Many Requests』の嵐になる場面は典型例です。無料プランだと分間60リクエストが上限のケースが多く、for文でtime.sleep(1.1)を入れて1秒以上の間隔を空けるだけで解決します。Retry-Afterヘッダーが返っていれば、その秒数を読み取って動的に待機時間を決める実装が理想的です。
別の呼び方
Too Many Requests
レート制限
429エラー
minto.tech スマホ(Android/iPhone)・PC(Mac/Windows)の便利情報をお届け! 月間アクセス160万PV!スマートフォン、タブレット、パソコン、地デジに関する素朴な疑問や、困ったこと、ノウハウ、コツなどが満載のお助け記事サイトはこちら!