Configurazione
Configura il client Python di Listings API: chiave API, URL di base, timeout, tentativi e logging.
Firma del costruttore
listingsapi.ListingsAPI( api_key: str | None = None, *, base_url: str | None = None, timeout: float = 240.0, max_retries: int = 2,)Tutti gli argomenti sono facoltativi. Se api_key viene omesso, il client legge LISTINGSAPI_KEY dall'ambiente e solleva AuthenticationError al momento della costruzione se nessuno dei due è impostato.
Opzioni
Chiave API
export LISTINGSAPI_KEY="your-api-key"import listingsapi # From environment (recommended)client = listingsapi.ListingsAPI() # Explicit keyclient = listingsapi.ListingsAPI(api_key="your-api-key")Timeout
Il valore predefinito è 240.0 secondi. Per script di breve durata o per l'uso interattivo, puoi impostare un valore più basso:
client = listingsapi.ListingsAPI(timeout=30.0)Il timeout si applica a ogni singola richiesta HTTP. Nelle chiamate di paginazione in blocco (auto_paging_iter), il timeout viene applicato separatamente a ogni richiesta.
Tentativi
L'SDK monta un adattatore urllib3 Retry sulla propria sessione requests che ripete automaticamente le richieste in caso di risposte 429, 500, 502, 503 e 504, ma solo per i metodi sicuri: GET, HEAD e OPTIONS. Le richieste di scrittura (POST, DELETE) vengono inviate esattamente una volta e sollevano immediatamente l'errore in caso di fallimento. Il valore predefinito è di 2 tentativi con un fattore di backoff esponenziale di 0.5 secondi. Gli header Retry-After vengono rispettati, quindi una richiesta che riceve una risposta 429 con un tempo di attesa viene ripetuta esattamente dopo tale intervallo.
L'API v4 non supporta Idempotency-Key e non rileva le scritture ripetute, quindi una scrittura che supera il timeout o restituisce 5xx potrebbe essere già stata applicata. Ripeterla senza verificare creerebbe una seconda sede, un secondo post o una seconda risposta a una recensione. Prima di ripetere una scrittura, rileggi il record usando una chiave sotto il tuo controllo.
# 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)Se 429 persiste dopo tutti i tentativi, viene sollevato come RateLimitError; consulta Gestione degli errori per un esempio di backoff manuale.
Sostituzione dell'URL di base
Utile per ambienti di staging o proxy interni:
client = listingsapi.ListingsAPI(base_url="https://staging.example.com")La barra finale viene rimossa automaticamente. Tutte le richieste vengono effettuate sotto il percorso /api/v4/ su questa origine.
Logging
L'SDK registra i log tramite il modulo standard logging usando il logger listingsapi. Al livello DEBUG registra il metodo e l'URL di ogni richiesta (e i parametri di query per GET); i corpi delle richieste e la tua chiave API non vengono mai registrati.
import logginglogging.basicConfig()logging.getLogger("listingsapi").setLevel(logging.DEBUG) import listingsapiclient = listingsapi.ListingsAPI()client.locations.list(first=1)Passaggi successivi
- Guida rapida: la tua prima chiamata API
- Gestione degli errori: tipi di eccezione e indicazioni sui tentativi