Konfigurasi
Konfigurasikan klien Python Listings API: kunci API, URL dasar, batas waktu, percobaan ulang, dan pencatatan log.
Signature konstruktor
listingsapi.ListingsAPI( api_key: str | None = None, *, base_url: str | None = None, timeout: float = 240.0, max_retries: int = 2,)Semua argumen bersifat opsional. Jika api_key tidak diberikan, klien membaca LISTINGSAPI_KEY dari lingkungan dan memunculkan AuthenticationError saat konstruksi jika keduanya tidak ditetapkan.
Opsi
Kunci API
export LISTINGSAPI_KEY="your-api-key"import listingsapi # From environment (recommended)client = listingsapi.ListingsAPI() # Explicit keyclient = listingsapi.ListingsAPI(api_key="your-api-key")Batas waktu
Nilai default adalah 240.0 detik. Untuk skrip yang berjalan singkat atau penggunaan interaktif, Anda mungkin ingin menetapkan batas waktu yang lebih pendek:
client = listingsapi.ListingsAPI(timeout=30.0)Batas waktu berlaku untuk setiap permintaan HTTP secara terpisah. Pemanggilan paginasi massal (auto_paging_iter) menerapkan batas waktu per permintaan secara independen.
Percobaan ulang
SDK memasang adaptor urllib3 Retry pada sesi requests yang secara otomatis mencoba ulang permintaan dengan respons 429, 500, 502, 503, dan 504, tetapi hanya untuk metode yang aman: GET, HEAD, dan OPTIONS. Permintaan penulisan (POST, DELETE) dikirim tepat satu kali dan langsung memunculkan kesalahan jika gagal. Nilai default adalah 2 percobaan ulang dengan faktor jeda eksponensial 0.5 detik. Header Retry-After dipatuhi, sehingga permintaan dengan respons 429 yang mencantumkan waktu tunggu dicoba ulang setelah tepat selama waktu tersebut.
API v4 tidak mendukung Idempotency-Key dan tidak mendeteksi penulisan berulang, sehingga penulisan yang melewati batas waktu atau mengembalikan 5xx mungkin sudah tersimpan. Mencobanya ulang tanpa pemeriksaan akan membuat lokasi, postingan, atau balasan ulasan kedua. Baca kembali rekaman menggunakan kunci yang Anda kendalikan sebelum mengulangi penulisan.
# 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)429 yang tetap terjadi setelah semua percobaan ulang akan dimunculkan sebagai RateLimitError; lihat Penanganan kesalahan untuk contoh penerapan jeda percobaan ulang secara manual.
Penggantian URL dasar
Berguna untuk lingkungan staging atau proksi internal:
client = listingsapi.ListingsAPI(base_url="https://staging.example.com")Garis miring di akhir dihapus secara otomatis. Semua permintaan dibuat di bawah jalur /api/v4/ pada origin ini.
Pencatatan log
SDK mencatat log melalui modul standar logging menggunakan logger listingsapi. Pada tingkat DEBUG, SDK mencatat metode dan URL setiap permintaan (serta parameter kueri untuk GET); isi permintaan dan kunci API Anda tidak pernah dicatat dalam log.
import logginglogging.basicConfig()logging.getLogger("listingsapi").setLevel(logging.DEBUG) import listingsapiclient = listingsapi.ListingsAPI()client.locations.list(first=1)Langkah berikutnya
- Panduan awal: pemanggilan API pertama Anda
- Penanganan kesalahan: jenis pengecualian dan panduan percobaan ulang