أمس في ٢١:٣٦
صاحب الموضوع
Günümüzde API entegrasyonları, yazılım projelerinin temel taşlarından biri haline geldi. Ancak, ağ tabanlı işlemler doğal olarak çeşitli hatalar ve zaman aşımı sorunlarıyla karşılaşabilir. Bu noktada, Python'da güvenilir ve kararlı bir API iletişimi için retry (yeniden deneme) sistemi kurmak kritik önemdedir. Bu yazıda, requests kütüphanesiyle birlikte retry mekanizmasını nasıl yapılandırabileceğinizi detaylandıracağım.
İlk adım olarak,
requests kütüphanesi temel alınırken, bu kütüphane doğrudan retry özelliği sunmaz. Ancak,
urllib3'ün sağladığı
Retry sınıfı ve
requests.adapters.HTTPAdapter kullanılarak bu özellik eklenebilir. Bu yapı, belirli hatalar veya zaman aşımı durumlarında otomatik olarak yeniden deneme yapacak şekilde yapılandırılır.
Öncelikle, gerekli kütüphaneleri yüklemelisiniz:
Daha sonra, aşağıdaki gibi bir yapı kurabilirsiniz:
1234567891011121314151617181920212223import requests
from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry
[b]Retry politikasını yapılandırın[/b]
retry_strategy = Retry(
total=5, # toplam deneme sayısı
status_forcelist=[429, 500, 502, 503, 504], # bu HTTP durum kodlarında yeniden dene
method_whitelist=["HEAD", "GET", "OPTIONS"], # hangi metodlara retry uygulanacak
backoff_factor=1 # geri dönüş süresi, artarak deneme sırasını yavaşlatır
)
[b]Otomatik yeniden deneme yapmak için adapter oluşturun[/b]
adapter = HTTPAdapter(max_retries=retry_strategy)
[b]Otomatik retry ile kullanmak istediğiniz oturum[/b]
session = requests.Session()
session.mount("https://", adapter)
session.mount("http://", adapter)
[b]API çağrısı yaparken[/b]
response = session.get("https://api.ornek.com/veri")
print(response.status_code)
Bu yapı sayesinde, belirlenen hata kodlarında ve metodlarda otomatik olarak tekrar denemeler yapılır. Geri dönüş faktörü ve toplam deneme sayısı, API'nin stabilitesine göre ayarlanabilir. Ayrıca,
backoff_factor ile denemeler arasına gecikme ekleyerek, API sağlayıcıya olan yükü azaltmak ve başarı şansını artırmak mümkündür.
Sonuç olarak, bu sistem, API iletişiminizdeki hata oranını minimize ederken, uygulama performansını ve güvenilirliğini artırır. Çeşitli projelerde bu yapı, özellikle yüksek erişilebilirlik ve hata toleransı gerektiren uygulamalarda temel bir bileşen haline gelir.