Skip to content

限流

預設配額

維度配額
每個 (AppID, 客戶端 IP) 每分鐘600 次請求
視窗60 秒(滾動)
超出返回HTTP 429

實際配額可能根據賬號等級調整,請以你賬號實際值為準。

429 響應

json
{
  "code": 429,
  "message": "請求過於頻繁,請稍後再試",
  "data": null
}

部分情況下還會附帶 Retry-After 響應頭,單位秒。

客戶端建議

1. 退避重試(針對 429 / 5xx)

python
import time, random

def call_with_retry(fn, *args, max_attempts=4):
    for attempt in range(max_attempts):
        try:
            resp = fn(*args)
            if resp.get('code') == 429:
                wait = (2 ** attempt) + random.random()
                time.sleep(min(wait, 30))
                continue
            return resp
        except Exception:
            if attempt == max_attempts - 1:
                raise
            time.sleep(2 ** attempt)

不要無限重試

對 4xx(除 429)不要重試 —— 是請求本身的問題,重試只會重複失敗。

2. 控制併發

如果你的業務側需要批次開卡,建議:

  • 單 worker 順序請求(< 10 QPS)
  • 多 worker 時透過佇列控制總併發,留出餘量給其他業務

3. 不要觸發限流來"測試"

每次 429 都計入限流計數,可能讓你後續真實請求被拒。用小流量手工驗證即可。

與冪等鍵的配合

如果你因 429 重試,請保持同一個 Idempotency-Key(針對寫介面)。這樣即使有一次請求實際到達後端但響應丟失,重試也不會重複開卡。

採用 MIT 等價條款釋出