Konfigurasi

Konfigurasikan klien Python Listings API: kunci API, URL dasar, batas waktu, percobaan ulang, dan pencatatan log.

Signature konstruktor

Python
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

OpsiTipeNilai defaultDeskripsi
api_keystr | NoneNoneKunci API. Menggunakan variabel lingkungan LISTINGSAPI_KEY jika tidak diberikan.
base_urlstr | Nonehttps://listingsapi.comOrigin API. Garis miring di akhir dihapus secara otomatis.
timeoutfloat240.0Batas waktu per permintaan dalam detik (berlaku untuk setiap permintaan HTTP secara terpisah).
max_retriesint2Percobaan ulang otomatis untuk respons 429 dan 5xx. Tetapkan ke 0 untuk menonaktifkannya.

Kunci API

bash
export LISTINGSAPI_KEY="your-api-key"
Python
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:

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

Python
# 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:

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

Python
import logginglogging.basicConfig()logging.getLogger("listingsapi").setLevel(logging.DEBUG) import listingsapiclient = listingsapi.ListingsAPI()client.locations.list(first=1)

Langkah berikutnya