Configuration
Configurez le client Python de Listings API : clé API, URL de base, délai d’attente, nouvelles tentatives et journalisation.
Signature du constructeur
listingsapi.ListingsAPI( api_key: str | None = None, *, base_url: str | None = None, timeout: float = 240.0, max_retries: int = 2,)Tous les arguments sont facultatifs. Si api_key est omis, le client lit LISTINGSAPI_KEY dans l’environnement et lève AuthenticationError lors de sa création si aucun des deux n’est défini.
Options
Clé API
export LISTINGSAPI_KEY="your-api-key"import listingsapi # From environment (recommended)client = listingsapi.ListingsAPI() # Explicit keyclient = listingsapi.ListingsAPI(api_key="your-api-key")Délai d’expiration
La valeur par défaut est de 240.0 secondes. Pour les scripts de courte durée ou une utilisation interactive, vous pouvez choisir une valeur plus courte :
client = listingsapi.ListingsAPI(timeout=30.0)Le délai d’expiration s’applique à chaque requête HTTP individuellement. Les appels de pagination en masse (auto_paging_iter) respectent ce délai indépendamment pour chaque requête.
Nouvelles tentatives
Le SDK monte un adaptateur urllib3 Retry sur sa session requests, qui relance automatiquement les requêtes ayant reçu les réponses 429, 500, 502, 503 et 504, mais uniquement pour les méthodes sûres : GET, HEAD et OPTIONS. Les requêtes d’écriture (POST, DELETE) sont envoyées exactement une fois et lèvent immédiatement une exception en cas d’échec. Par défaut, 2 nouvelles tentatives sont effectuées avec un facteur de temporisation exponentielle de 0.5 seconde. Les en-têtes Retry-After sont respectés : lorsqu’une réponse 429 indique un temps d’attente, la requête est relancée après exactement ce délai.
L’API v4 ne prend pas en charge Idempotency-Key et ne détecte pas les écritures répétées ; une écriture dont le délai expire ou qui renvoie 5xx peut donc déjà avoir été validée. La relancer sans vérification créerait un deuxième établissement, une deuxième publication ou une deuxième réponse à un avis. Récupérez l’enregistrement à l’aide d’une clé que vous contrôlez avant de répéter une écriture.
# 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)Une réponse 429 qui persiste après toutes les nouvelles tentatives entraîne la levée de RateLimitError ; consultez Gestion des erreurs pour savoir comment mettre en place une temporisation manuelle.
Remplacement de l’URL de base
Utile pour les environnements de préproduction ou les proxys internes :
client = listingsapi.ListingsAPI(base_url="https://staging.example.com")La barre oblique finale est supprimée automatiquement. Toutes les requêtes utilisent le chemin /api/v4/ sur cette origine.
Journalisation
Le SDK utilise le module standard logging et le journaliseur listingsapi pour la journalisation. Au niveau DEBUG, il enregistre la méthode et l’URL de chaque requête (ainsi que les paramètres de requête pour GET) ; le corps des requêtes et votre clé API ne sont jamais journalisés.
import logginglogging.basicConfig()logging.getLogger("listingsapi").setLevel(logging.DEBUG) import listingsapiclient = listingsapi.ListingsAPI()client.locations.list(first=1)Étapes suivantes
- Démarrage rapide : votre premier appel API
- Gestion des erreurs : types d’exceptions et conseils pour les nouvelles tentatives