API リファレンス
レート制限と再試行
#制限の仕組み
キー単位の RPM と RPD の上限。429 の場合、ゲートウェイは Retry-After を送信します。上流の制限はサーキットブレーカーで保護されているため、不調なチャネルがあっても全体に負荷が急増することはありません。
制限はキー単位なので、プロジェクトごとにキーを分ければレート制限も分離されます。キー単位の上限は コンソール → API キー で編集します。
#正しい再試行のしかた
Retry-After があればそれに従い、なければジッター付きの指数バックオフを行います。試行回数の合計には上限を設けてください — 完全に停止しているモデルは、いつまでも再試行するより呼び出し元にエラーを返すほうが適切です。
backoff.py
import time, requests
def call_with_backoff(url, headers, body, tries=5):
for i in range(tries):
r = requests.post(url, headers=headers, json=body)
if r.status_code != 429:
return r
# Respect Retry-After (seconds); fall back to 2**i backoff.
wait = int(r.headers.get("Retry-After", 2 ** i))
time.sleep(wait)
r.raise_for_status()まだ解決しませんか?
リクエスト ID かエラーメッセージを送っていただければ、こちらで調査します。