⚡ Geliştirme

Retry ve Exponential Backoff ile Sağlam API İstemcisi Yazmak

10 Ekim 2026· 2 dk okuma· Apicloud Blog
⚡

Neden Retry Mekanizmasına İhtiyacımız Var?

API istemcileri yazarken en sık karşılaştığımız sorunlardan biri, geçici ağ hatalarıdır. Sunucu geç olarak yanıt vermemesi, bağlantı zaman aşımı veya HTTP 5xx hataları çoğu zaman kalıcı bir sorun değil, sistemdeki ani yük artışı veya geçici altyapı sorunu kaynaklıdır. Böyle durumlarda API çağrısını olduğu gibi bırakmak yerine, birkaç deneme daha yapmak hem uygulamanızın dayanıklılığını artırır hem de kullanıcı deneyimini iyileştirir.

Ancak her hatada aynı hızla tekrar denemek de sorunu çözmez. Tersine, sunucunun zaten zorlandığı bir anda üst üste gelen istekler durumu daha da kötüleştirebilir. İşte burada akıllı retry stratejileri ve özellikle exponential backoff devreye girer.

Exponential Backoff Nasıl Çalışır?

Exponential backoff, her başarısız denemeden sonra bekleme süresini katlayarak artıran bir stratejidir. İlk hatada 1 saniye beklersiniz, ikinci hatada 2 saniye, üçüncü hatada 4 saniye şeklinde devam eder. Bu yaklaşım hem sunucuya toparlanma şansı tanır hem de istemci tarafında gereksiz yük oluşturmaz.

Pratikte implementasyon yaparken dikkate almanız gereken birkaç kural vardır:

  • Maksimum deneme sayısı belirleyin. Sonsuz döngü oluşturmak istemezsiniz; genellikle 3 ile 5 arası uygun bir aralıktır.
  • Bekleme süresi için bir üst sınır koyun. Her seferinde süre ikiye katlandığında 30 saniye gibi gerçekçi olmayan bekleme sürelerine ulaşabilirsiniz.
  • Jitter ekleyin. Her istemci aynı anda ve aynı aralıklarla tekrar deneme yaparsa, tüm istekler yine çarpışabilir. Rastgelelik katmak bu sorunu önler.
  • Sadece geçici hataları retry edin. HTTP 4xx istemci hatasıysa (401, 404 gibi) tekrar denemek anlamsızdır. 429 Too Many Requests ve 5xx server hataları retry edilmeye uygundur.

Pratik Uygulama Örnekleri

JavaScript ve TypeScript projelerinde bu mantığı kurarken async-await yapısını kullanarak temiz bir implementasyon yazabilirsiniz. Axios veya native fetch gibi kütüphanelerle birlikte çalışacak esnek bir retry fonksiyonu, projenizin her yerinde güvenle kullanılabilir.

Python tarafında requests kütüphanesiyle çalışırken tenacity gibi kütüphaneler bu işi oldukça kolaylaştırır. Kendi retry decorator'ünüzü yazmak yerine bu tür hazır çözümleri tercih etmek, hata ayıklama sürecinizi hızlandırır.

Özetle sağlam bir API istemcisi yazmak, sadece istek göndermek ve yanıt almak değildir. Ağın doğal dalgalanmalarına dayanıklı, akıllıca retry stratejileri kullanan bir yapı kurmak uzun vadede çok daha az baş ağrısı demektir. Özellikle üçüncü parti API'lere entegrasyon yaparken — örneğin sen apicloud.com.tr üzerinden API servislerine erişim sağlayan bir uygulama geliştiriyorsanız — bu kalıcılık önlemleri uygulamanızın profesyonelliğini ortaya koyar.

Son olarak unutmayın ki retry mekanizması bir sihir değneği değildir. Kalıcı hataları maskeleyebilir ve yanlış kullanıldığında performansı olumsuz etkileyebilir. Bu yüzden hangi durumlarda retry edileceğini, ne zaman sabote edileceğini düzgün anlamak, yazdığınız kodun kalitesini doğrudan belirler.

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