Ana sayfa → Yardım

Bir API ağ geçidinden gelen 429 iki farklı anlama gelir

Durum koduna değil gövdeye bakın. Bakiye bittiği için gelen bir 429, ne kadar beklerseniz bekleyin yeniden denemede asla başarılı olmaz. Üst sağlayıcıdaki yoğunluktan gelen bir 429 ise genellikle saniyeler içinde düzelir.

Gördüğünüz hata

Neden oluyor

HTTP'de "paranız bitti" anlamına gelen bir durum kodu yok. 402 Payment Required var ama neredeyse hiç kullanılmaz, bu yüzden ağ geçitleri 429'u hem faturalama hem kısıtlama için kullanır. İkisi pratikte her açıdan zıttır: Biri siz bir şey yapana kadar kalıcıdır, diğeri geçicidir ve kendiliğinden düzelir.

Bu önemli, çünkü SDK'lardaki yeniden deneme yardımcılarının çoğu yalnızca durum koduna bakar. OpenAI'ın Python istemcisi 429'u varsayılan olarak yeniden dener. Onu bakiyesi bitmiş bir ağ geçidine yönlendirin; başarılı olamayacak bir istek için tüm yeniden deneme bütçesini harcar, sonunda bir zaman aşımı bildirir – ve siz var olmayan bir ağ sorununu ararsınız.

Bilmeye değer üçüncü bir neden daha var, çünkü ikincisine benziyor ve farklı şekilde çözülüyor: hesap başına eşzamanlılık sınırı. Mesaj bunu doğrudan söyler — Concurrency limit exceeded for user, please retry later. Bu, dakikada kaç istek gönderdiğinizle değil, aynı anda kaç isteğin işlemde olduğuyla ilgilidir. Beklemek işe yarar, ama asıl çözüm istemcinizde paralelliği sınırlamaktır; hatayı paralelliği artırmak doğurdu.

Sebebin bu olduğunu doğrulayın

Tek bir istek gönderin ve duruma değil gövdeye bakın:

curl -s -o /tmp/r.json -w '%{http_code}\n' \
  'YOUR_BASE_URL/chat/completions' \
  -H 'Authorization: Bearer YOUR_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"model":"YOUR_MODEL","messages":[{"role":"user","content":"hi"}],"max_tokens":1}'

cat /tmp/r.json

quota, balance ya da credit geçen bir kod veya mesaj faturalama demektir. rate, busy ya da upstream geçen her şey kısıtlama demektir. Gövde boşsa Retry-After başlığına bakın – varsa kısıtlamaya işaret eder.

Nasıl düzeltilir

  1. Yeniden denemeden önce gövdeye göre karar verinJSON'u ayrıştırın ve faturalamadan kaynaklanan 429'ları kesin hata sayın. Onları yeniden denemek bütçenizi boşa harcar ve gerçek sebebi bir zaman aşımının arkasına saklar.
  2. Varsa Retry-After'a uyunKısıtlama yanıtları çoğu zaman bunu içerir. Yoksa, bir saniye civarından başlayan üstel geri çekilme makul bir varsayılandır; hemen yeniden denemek yoğunluğu genellikle kötüleştirir.
  3. Bakiye için hatalardan ayrı uyarı kurunBakiyenin bitmesi bir arıza değil, ticari bir olaydır. Çoğu ağ geçidi bakiyeyi kendi API'si ya da paneli üzerinden gösterir – o sayıyı izleyin, bu 429 ile üretimde hiç karşılaşmazsınız.
  4. Yalnızca hızı değil, eşzamanlı istekleri de sınırlayınMesaj eşzamanlılıktan bahsediyorsa, daha yavaş bir yeniden deneme döngüsü işe yaramaz — sınır aynı anda yapılan istekleri sayar. İstemcinizin etrafına, ağ geçidinin izin verdiği boyutta bir semafor koymak bunu düzgün şekilde çözer.
  5. Kısıtlama kaynaklı bir 429'u düzeltmek için eşzamanlılığı artırmayınYoğun bir üst sağlayıcıya daha fazla paralel istek, daha fazla verim değil daha fazla 429 üretir. Eşzamanlılığı düşürün ve geri çekilmenin işini yapmasına izin verin.
APICLAN'da ikisi tahmine gerek kalmadan ayırt edilebilir. Bakiye bittiğinde {"code":"API_KEY_QUOTA_EXHAUSTED"} döner; üst sağlayıcı yoğunluğunda {"error":{"type":"api_error","message":"Upstream rate limit exceeded, please retry later"}} döner. Bakiyeniz panelde görünür ve yüklemeler anında geçerli olur.

İlgili konular

OpenAI uyumlu bir API'yi çağırırken Unexpected token '<' hatası401 invalid API key – anahtar doğru göründüğü halde hata veriyorsa

Son kontrol: 2026-10-01. Canlı bir OpenAI uyumlu ağ geçidinde teşhis edilen sorunlardan yazılmıştır, başka sitelerden derlenmemiştir.