⚡ Geliştirme

Retry ve exponential backoff ile sağlam API istemcisi yazmak

23 Ekim 2026· 2 dk okuma· Apicloud Blog
⚡

Neden Hata Tekrarı (Retry) İşlemine İhtiyaç Vardır?

API istemcileri yazarken karşılaşılan hataların büyük bir kısmı geçici doğadadır. Ağ geçici olarak kopabilir, sunucu anlık olarak aşırı yük altında kalabilir veya_rate limiting_ sınırları geçici olarak tetiklenebilir. Bu tür durumlarda istek anında başarısız olur ama birkaç saniye sonra aynı istek başarılı sonuç verebilir.

Geçici hataları görmezden gelip uygulamanızı çökertmek yerine, stratejik olarak tekrar deneme yapmak istemcinizin dayanıklılığını artırır. Ancak her hatada koşulsuz tekrar denemek de yanlış bir yaklaşımdır; bu, sunucuya gereksiz baskı yükler ve hatta durumu kötüleştirebilir. İşte burada retry mekanizması ve onu dengeli hale getiren exponential backoff devreye girer.

Exponential Backoff Mantığı Nedir?

Exponential backoff, bir isteğin başarısız olması sonrasında bekleme süresinin üssel olarak arttırılması mantığına dayanır. İlk denemeden sonra 1 saniye, ikinci denemeden sonra 2 saniye, üçüncü denemeden sonra 4 saniye gibi bir artış söz konusudur. Bu yaklaşımın iki temel avantajı vardır:

  • Sunucu toparlanana kadar istemci tarafını sakinleştirir ve aşırı talep gönderilmesini engeller.
  • Uygulama kullanıcıya daha anlamlı bir deneyim sunar; ani ve rastgele tekrarlar yerine önceden tanımlanmış bir bekleme süreci işler.

Ancak saf üssel artış bazen çok uzun beklemelere yol açabilir. Bu nedenle pratikte genellikle bir maksimum bekleme süresi ve rastgelelik (jitter) eklenir. Jitter, bekleme süresinin üzerine küçük bir rastgele değer ekleyerek birçok istemcinin aynı anda aynı anda tekrar deneme yapmasını engeller ve sunucu tarafındaki kitlelenme riskini azaltır.

Pratik Bir Uygulama Stratejisi

Sağlam bir retry mekanizması tasarlarken şu prensipleri göz önünde bulundurmalısınız. Öncelikle hangi HTTP durum kodlarının tekrar denemeye değer olduğunu belirleyin. Genellikle 429 (Too Many Requests), 500 (Internal Server Error), 502 (Bad Gateway), 503 (Service Unavailable) ve 504 (Gateway Timeout) kodları geçici hatalar olarak değerlendirilir. 400 ve 401 gibi istemci kaynaklı hatalar ise genellikle tekrar denense de fayda sağlamaz.

İkinci olarak maksimum deneme sayısını sabit tutun. Üç ila beş deneme çoğu senaryo için yeterlidir; bu sayının üzerinde olmak hem kaynak israfıdır hem de kullanıcı deneyimini olumsuz etkiler. Üçüncü olarak, her deneme arasında exponential backoff + jitter uygulayın. Dördüncü olarak, eğer API yanıtında Retry-After başlığı bulunuyorsa, bu değeri referans alarak bekleme süresini ayarlayın.

Birçok modern API platformu, bu tür istemci stratejilerini doğrudan kendi SDK'ları veya yapılandırmalarıyla destekler. Örneğin Sen Apicloud gibi OpenAI uyumlu API servislerini kullanan geliştiriciler, proxy veya wrapper katmanları ekleyerek retry ve backoff mantığını kolayca yönetebilirler; detaylı bilgi için apicloud.com.tr platformunu inceleyebilirsiniz.

Sonuç

Retry ve exponential backoff, API istemcilerinizin yalnızca işlevsel olmasını değil, aynı zamanda dirençli olmasını sağlar. Geçici hatalarla head-top-head savaşmak yerine onlara esnek bir yaklaşımla karşılık vermek, uygulamanızın gerçek dünya koşullarında daha tutarlı çalışmasını temin eder. Doğru durum kodlarını seçmek, uygun bekleme stratejisi uygulamak ve aşırı denemeden kaçınmak, sağlam bir istemci yazmanın temel taşlarıdır.

Hazır mısın?54+ model, tek API anahtarı, TL bakiye ile — apicloud.com.tr
API anahtarını al →

İlgili yazılar

← Tüm yazılar