Yapılandırma
Listings API Python istemcisini yapılandırın: API anahtarı, temel URL, zaman aşımı, yeniden denemeler ve günlük kaydı.
Kurucu imzası
listingsapi.ListingsAPI( api_key: str | None = None, *, base_url: str | None = None, timeout: float = 240.0, max_retries: int = 2,)Tüm argümanlar isteğe bağlıdır. api_key belirtilmezse istemci ortamdan LISTINGSAPI_KEY değerini okur ve ikisi de ayarlanmamışsa oluşturma sırasında AuthenticationError hatasını yükseltir.
Seçenekler
API anahtarı
export LISTINGSAPI_KEY="your-api-key"import listingsapi # From environment (recommended)client = listingsapi.ListingsAPI() # Explicit keyclient = listingsapi.ListingsAPI(api_key="your-api-key")Zaman aşımı
Varsayılan değer 240.0 saniyedir. Kısa süreli betikler veya etkileşimli kullanım için daha kısa bir süre tercih edebilirsiniz:
client = listingsapi.ListingsAPI(timeout=30.0)Zaman aşımı her HTTP isteğine ayrı ayrı uygulanır. Toplu sayfalama çağrıları (auto_paging_iter), istek başına zaman aşımını her istek için bağımsız olarak uygular.
Yeniden denemeler
SDK, requests oturumuna urllib3 Retry bağdaştırıcısını ekler; bu bağdaştırıcı 429, 500, 502, 503 ve 504 yanıtlarında otomatik olarak yeniden dener, ancak bunu yalnızca güvenli yöntemler için yapar: GET, HEAD ve OPTIONS. Yazma istekleri (POST, DELETE) tam olarak bir kez gönderilir ve başarısızlık durumunda hata hemen yükseltilir. Varsayılan olarak, 0.5 saniyelik üstel bekleme katsayısıyla 2 yeniden deneme yapılır. Retry-After üstbilgileri dikkate alınır; dolayısıyla bekleme süresi belirten bir 429 yanıtı alındığında, tam olarak bu süre geçtikten sonra yeniden denenir.
v4 API, Idempotency-Key desteği sunmaz ve tekrarlanan yazma işlemlerini algılamaz; bu nedenle zaman aşımına uğrayan veya 5xx döndüren bir yazma işlemi zaten kaydedilmiş olabilir. Kontrol etmeden yeniden denemek ikinci bir konum, gönderi veya yorum yanıtı oluşturur. Bir yazma işlemini tekrarlamadan önce, sizin kontrolünüzdeki bir anahtarı kullanarak kaydı yeniden okuyun.
# More aggressive retry for long-running batch jobsclient = listingsapi.ListingsAPI(max_retries=5) # Disable retries entirely (e.g. when you want fast failures)client = listingsapi.ListingsAPI(max_retries=0)Tüm yeniden denemelere rağmen devam eden bir 429, RateLimitError olarak yükseltilir; bekleme süresini elle uygulama örneği için Hata işleme bölümüne bakın.
Temel URL'yi geçersiz kılma
Hazırlık ortamları veya dahili vekil sunucular için yararlıdır:
client = listingsapi.ListingsAPI(base_url="https://staging.example.com")Sondaki eğik çizgi otomatik olarak kaldırılır. Tüm istekler bu temel adresteki /api/v4/ yolu altında yapılır.
Günlük kaydı
SDK, standart logging modülü aracılığıyla listingsapi günlük kaydedicisini kullanarak günlük tutar. DEBUG düzeyinde her isteğin yöntemini ve URL'sini (GET için sorgu parametrelerini de) kaydeder; istek gövdeleri ve API anahtarınız hiçbir zaman günlüğe kaydedilmez.
import logginglogging.basicConfig()logging.getLogger("listingsapi").setLevel(logging.DEBUG) import listingsapiclient = listingsapi.ListingsAPI()client.locations.list(first=1)Sonraki adımlar
- Hızlı başlangıç: ilk API çağrınız
- Hata işleme: istisna türleri ve yeniden deneme yönergeleri