529 是唯一一種不是由你的程式碼造成的 Claude 錯誤:過載的是 Anthropic。你無法修復它,只能妥善吸收。這表示要採用耐心的退避重試、為延遲敏感路徑準備備援模型,尤其不能立即發起重試爆發,否則會放大事件。
錯誤
{
"type": "error",
"error": { "type": "overloaded_error",
"message": "Overloaded" }
}原因與解決方法一覽
| 原因 | 解決方法 |
|---|---|
| 提供商端過載(發布日、區域性事件)。會同時影響所有客戶。 | 採用帶抖動的退避;查看 Anthropic 狀態頁面,不要重新部署你的應用程式。 |
| 你自己的負載高峰,碰上了原本就緊繃的容量。 | 錯開批次處理;通常延遲十分鐘就足夠。 |
| 與 429 混淆:速率限制在日誌中看起來相似,但原因完全不同。 | 429 表示你超過了自身限制(伺服器正常);529 表示伺服器過載(你的配額正常)。只有 429 會附帶 Retry-After 提示。 |
| 沒有定義備援,因此提供商問題會一路傳遞至終端使用者。 | 定義備援鏈——在同一系列內(Sonnet → Haiku)行為相近;跨提供商(Claude → GPT)則能承受完整事件。 |
重試,但不要放大事件
將 529 視為沒有 Retry-After 的 429:從約 2 秒開始指數退避,加入抖動,上限設為 30–60 秒,約五次嘗試後放棄並將工作排入佇列。抖動是關鍵:沒有它,所有用戶端會同時返回,延長它們正試圖躲避的過載。
切換備援,而非癱瘓
對延遲敏感的路徑定義備援鏈。在 OpenAI 相容端點上,只需變更一個字串——不需要第二個 SDK,也不需要第二個帳戶:
PREFERRED = ["claude-sonnet-5", "claude-haiku-4-5", "gpt-5-6-terra"]
def complete(messages):
last = None
for model in PREFERRED:
try:
return client.chat.completions.create(
model=model, messages=messages, max_tokens=800)
except APIStatusError as e:
if e.status_code not in (429, 500, 529):
raise
last = e # saturé — passer au palier suivant
raise last最後才查看你的程式碼
如果 529 只出現在一種請求類型,而同一時間其他呼叫都成功,那就不是全面性事件:檢查該路徑是否傳送異常大的提示詞,或在緊密迴圈中持續觸發。反之,如果所有呼叫同時受到影響,之後又自行恢復,那就是容量問題——工作應交給重試與備援,而不是重構。
如果你透過 Kunavo 呼叫
Kunavo 透過不只一條上游路徑路由 Claude,而其多模型目錄讓跨提供商切換只需在同一把金鑰、同一個餘額上更改模型名稱——上述模式不需要第二個帳戶。即使仍有 529 傳到你這裡,也永遠不會計費。 容量與價格是兩個不同的問題;至於後者,各模型費率列於 Claude API 價格表.
常見問題
529 是我的錯嗎?
不是。這是提供商端的容量問題。你的唯一責任是不要加劇事件(退避、抖動),並在事件持續時間超過你的延遲預算時準備備援出口。
529 與 429——有什麼差異?
429 表示您超過了使用限制,伺服器運作正常。529 表示伺服器本身過載,而您的配額正常。兩者都可以重試;只有 429 會提供 Retry-After 線索。
529 狀態會持續多久?
這無法預測,也無法保證——因此正確做法是採用有上限的退避策略並搭配佇列,而不是在程式碼中寫死等待時間。如果您的請求路徑有延遲預算,應由備援機制接手,而不是持續等待。
529 狀態的呼叫會收費嗎?
透過 Kunavo 不會:以錯誤結束的請求不會收費。直接簽約則取決於相關供應商的計費規則。