Python API Retry Sistemi Kurulumu

0 Cavab 3 Baxış
·
İştirakçılar
Mövzunu Açan #1
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:
KOD
1pip install requests


Daha sonra, aşağıdaki gibi bir yapı kurabilirsiniz:

KOD
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.

Cavab vermək üçün daxil olmalısınız.

0 sitat seçildi