レート制限と再試行
アカウントとキーごとの制限、すべての回線が混み合っているときの応答、再試行とタイムアウトの設定方法。
既定のレート制限はありません
NezhaGate はアカウントごとのリクエスト頻度に既定の制限を設けておらず、処理能力もご利用量に合わせて拡張します。利用量を抑えたい場合は、キーごとに制限を設定してください。
キーごとの制限
コンソールの「API Keys」ページで、キーごとに設定します。空欄または 0 は無制限です:
| 設定項目 | 内容 | 超えたとき |
|---|---|---|
| 1 分あたりのリクエスト数 | このキーが 1 分間に送れるリクエスト数の上限。 | 429 rate_limit_exceeded |
| 1 日の予算 | このキーが 1 日(UTC)に使える金額の上限(米ドル)。 | 402 insufficient_quota |
| 合計の利用上限 | このキーが合計で使える金額の上限(米ドル)。暴走させたくない自動化処理に向いています。 | 402 insufficient_quota |
| モデル許可リスト | このキーは、リストにあるモデルしか呼び出せません。 | 403 permission_denied |
| IP 許可リスト | リストにある IP またはアドレス範囲からのリクエストだけを受け付けます。 | 403 permission_denied |
すべての回線が混み合っているとき
- 各モデルは複数の回線で提供され、ゲートウェイがリクエストを回線間に振り分けます。あるモデルのすべての回線が同時に上限に達すると 429 が返り、OpenAI 互換のエンドポイントでは待つべき秒数が
Retry-Afterヘッダーで示されます。 - 画像と動画のタスクは、混み合っていても拒否されません。順番待ちに入り(
statusがqueuedになり、順番と予想待ち時間が付きます)、順番が来ると自動で始まります。 - 期間限定の無料モデルには 1 日あたりの呼び出し回数の上限もあり、超えると UTC 0 時にリセットされるまで 429 が返ります。
再試行の判断
| HTTP | 対処 |
|---|---|
| 429 | Retry-After ヘッダーの秒数だけ待ってから再試行します。ヘッダーがなければ 1 秒、2 秒、4 秒と間隔を延ばしながら待ちます。 |
| 500 / 502 / 503 / 504 | 指数バックオフ(1 秒、2 秒、4 秒、8 秒に少しランダムな揺らぎを加える)で再試行します。たいてい 3〜5 回で十分です。この種の失敗は課金されません。 |
| その他の 4xx | そのまま再試行しても解決しません。先に error.code に従ってリクエスト(パラメータ、モデル、キー、残高)を直してください。 |
| ネットワークエラー / タイムアウト | 対話はそのまま再試行できます。画像と動画は、まずコールログでタスクが作成されたかを確認してから、再送信するか決めてください。 |
import random
import time
import requests
def post_with_retry(url, headers, payload, tries=5):
for attempt in range(tries):
r = requests.post(url, headers=headers, json=payload, timeout=600)
if r.status_code == 429:
time.sleep(float(r.headers.get("Retry-After", 2 ** attempt)))
continue
if r.status_code >= 500:
time.sleep(2 ** attempt + random.random()) # 1, 2, 4, 8 s ... plus jitter
continue
return r # 2xx, or a 4xx to fix in the request
return rタイムアウト
- ストリーミングしない単一のリクエストは、約 10 分でエッジゲートウェイに切断されます(HTTP 524)。長い回答や推論モデルでは
stream: trueを使ってください。 - クライアントのタイムアウトは 10 分以上に設定してください。短いと、長い回答が届く前にクライアント側で接続を切ってしまいます。
- 画像と動画は非同期タスクで、送信リクエストはすぐに返るため、この制限は関係ありません。
さらに高い同時実行数が必要な場合
高い同時実行数を継続して使う予定があれば、事前に Telegram グループ またはサポートで利用量をお知らせください。利用量に合わせて容量を増やします。