429 hatası "daha yavaş" demektir, "paranız bitti" değil. Fark önemlidir: birinin çözümü beklemek, diğerinin çözümü bakiye yüklemektir — ikisini karıştırmak sizi yanlış yerde saatlerce hata ayıklamaya götürür.
Hata
{
"type": "error",
"error": { "type": "rate_limit_error",
"message": "Number of requests has exceeded your rate limit" }
}Nedenler ve çözümler özeti
| Neden | Çözüm |
|---|---|
| Hesabınızın dakika başına istek sınırının üzerinde | Her şeyi bir kerede göndermek yerine istemci tarafında kuyruğa alın ve eşzamanlılığı sınırlayın. |
| Dakika başına token sınırının üzerinde | Uzun istemler, istek kotasından çok önce token kotasını tüketir. Bağlamı küçültün veya işi bölün. |
| Aynı anahtarı kullanan birden fazla işlem | Sınır işlem için değil, anahtar içindir. Paralel worker'lar aynı kotaya birlikte dahil olur. |
| Backoff olmadan yeniden deneme | Hemen yeniden denemek sizi sürekli olarak sınırın üzerinde tutar. Jitter içeren üstel backoff zorunludur. |
Geldiğinde retry-after'a uyun
Yanıt retry-after başlığını içerdiğinde bu bir öneri değil, isteğin yeniden kabul edileceği tam süredir. Daha kısa beklemek başka bir 429'u garanti eder.
import time
from openai import APIStatusError
try:
resp = client.chat.completions.create(model=MODELO, messages=msgs)
except APIStatusError as e:
if e.status_code == 429:
espera = float(e.response.headers.get("retry-after", 5))
time.sleep(espera)
resp = client.chat.completions.create(model=MODELO, messages=msgs)
else:
raiseKaynakta eşzamanlılığı sınırlayın
En yaygın neden toplam hacim değil, ani artıştır: aynı anda gönderilen yirmi istek, bir dakikaya yayılan ve sınırı aşmayan altmış isteğin aşmadığı sınırı aşabilir. Bir semaphore, yalnızca yeniden denemenin çözemediği sorunu çözer.
import asyncio
LIMITE = asyncio.Semaphore(4) # no máximo 4 chamadas simultâneas
async def chamar(msgs):
async with LIMITE:
return await client.chat.completions.create(
model=MODELO, messages=msgs)Bunun sınır mı, bakiye mi olduğunu doğrulayın
429 hiçbir zaman kredi eksikliği anlamına gelmez — bu 402'dir. Günlüğünüz ikisini karıştırıyorsa araştırmadan önce durum koduna göre ayırın: 429'un çözümü zamanlama, 402'nin çözümü bakiye yüklemektir. 402'yi yeniden denemek her zaman başarısız olur.
Kunavo üzerinden çağrı yapıyorsanız
Kunavo'da sınırlar anahtar başınadır ve bakiye ayrı bir ön ödemeli cüzdandır; bu nedenle iki durum farklı durum kodlarıyla görünür: hız sınırı için 429 ve bakiye çağrıyı karşılamadığında 402 — biri asla diğerinin kılığına girmez. Reddedilen istekler ücretlendirilmez. Her çağrının bakiyenizden ne kadar tüketeceğini belirleyen token ücretleri Claude API fiyatlandırma kılavuzumuzda.
Sık sorulan sorular
429, kredilerimin tükendiği anlamına mı gelir?
Hayır. Bakiye yetersizliği 402'dir. 429 hızla ilgilidir: kısa sürede çok fazla istek veya token gönderdiniz; beklemek sorunu çözer.
Ne kadar beklemeliyim?
retry-after başlığı gelirse tam olarak o süre kadar. Başlık yoksa 1–2 saniyeden başlayarak jitter içeren üstel geri çekilme uygulayın; 30–60 saniyelik bir üst sınıra kadar çıkabilirsiniz.
Limiti artırmak sorunu çözer mi?
Hacim gerçekten yüksekse yardımcı olur; ancak 429'ların çoğu kısa süreli ani yoğunluklardan kaynaklanır. Eşzamanlılığı sınırlamak genellikle herhangi bir limiti değiştirmeden sorunu çözer.
İlgili kılavuzlar
- Claude API'de 529 overloaded_error — anlamı ve nasıl önlenir
- 401 authentication_error / invalid x-api-key hatası — kontrol edilmesi gerekenler, sırayla
- Claude API 429 rate_limit_error — nedenleri ve işe yarayan çözüm
Hata anlamlarına ilişkin daha fazla bilgi hata referansı bölümünde; anahtar almak kayıt ve kimlik doğrulama kılavuzu üzerinden bir dakika sürer.