API Hata Yönetimi: Rate Limit ve Dayanıklılık Stratejileri
Yapay zeka sağlayıcıları (OpenAI, Gemini, Anthropic), altyapılarını korumak için sıkı Rate Limit (istek sınırı) kuralları uygular. Bu sınırlar aşıldığında alınan 429 Too Many Requests hatasını doğru yönetmek, kesintisiz bir kullanıcı deneyimi için hayati önem taşır.
Neden Hata Alırız?
- TPM (Tokens Per Minute): Dakika başına işlenen toplam kelime/token sınırı.
- RPM (Requests Per Minute): Dakika başına gönderilen toplam istek sayısı.
- Server Error (5xx): Modelin aşırı yüklenmesi veya geçici kesintiler.
1) Altın Standart: Exponential Backoff Algoritması
Hata aldığınızda hemen tekrar denemek yerine, her denemede bekleme süresini katlayarak artırmak (2s, 4s, 8s...) sunucunun rahatlamasına zaman tanır.
import time
import random
def call_ai_api_with_retry(prompt, max_retries=5):
retry_count = 0
while retry_count < max_retries:
try:
# API Çağrısı Simülasyonu
return api_client.generate(prompt)
except Exception as e:
if "429" in str(e): # Rate Limit Hatası
wait_time = (2 ** retry_count) + random.random()
print(f"Sınır aşıldı. {wait_time:.2f} saniye bekleniyor...")
time.sleep(wait_time)
retry_count += 1
else:
raise e # Diğer hataları fırlat
return None
2) PHP ile Hata Yakalama (Graceful Degradation)
PHP tarafında cURL kullanarak hata kodlarını kontrol etmek ve kullanıcıya anlamlı geri bildirim vermek önemlidir.
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($httpCode == 429) {
// Retry-After header'ını kontrol et
header('Retry-After: 10');
die("Şu an çok fazla istek var, lütfen 10 saniye sonra tekrar deneyin.");
} elseif ($httpCode !== 200) {
error_log("AI API Hatası: " . $httpCode);
die("Teknik bir sorun oluştu, ekip bilgilendirildi.");
}
3) Çözüm Önerileri ve Best Practices
- Caching (Önbellekleme): Aynı sorular için API'ye tekrar gitmek yerine Redis veya veritabanı kullanarak yanıtları önbelleğe alın.
- Queue (Kuyruk) Yapısı: Yoğun işlemleri anlık yapmak yerine arka planda çalışan bir kuyruk sistemine (Örn: RabbitMQ, Celery) devredin.
- Monitoring: Hata oranlarını takip edin. Eğer 429 hataları %5'i geçiyorsa, API planınızı yükseltme vaktiniz gelmiş demektir.
💡 Uzman Notu: "Jitter" eklemek (bekleme süresine küçük rastgelelikler katmak), çok sayıda istemcinin aynı anda bekleme süresini bitirip tekrar sunucuya yüklenmesini engeller.