Guides

Relancer correctement une recherche qui a échoué

Une nouvelle tentative automatique est la bonne réaction pour certaines erreurs et une requête gaspillée pour d'autres. Se tromper revient soit à submerger un endpoint déjà en difficulté, soit à abandonner une recherche qui aurait fonctionné une seconde plus tard.

Les erreurs qui méritent une nouvelle tentative

Une réponse 503 signifie que le service est temporairement indisponible, exactement le type de situation passagère pour laquelle une courte nouvelle tentative différée est conçue. Un délai d'attente réseau dépassé de votre côté, lorsque vous n'avez reçu aucune réponse, entre dans la même catégorie, car la requête peut avoir été traitée ou non.

HTTP/1.1 503 Service Unavailable

{
  "status": "error",
  "error": {"code": "service_unavailable", "message": "Temporarily unavailable, try again shortly"}
}

Les erreurs qui ne méritent pas de nouvelle tentative

Une erreur 400 signifie que la requête elle-même était mal formée, par exemple un paramètre obligatoire manquant ou des coordonnées hors limites. Une erreur 401 signifie que l'authentification a échoué. Relancer l'une ou l'autre sans corriger le problème sous-jacent produit simplement la même erreur, et chaque tentative compte quand même comme une requête dans la plupart des cas : une boucle de nouvelles tentatives sur une requête invalide peut donc épuiser votre quota pour rien.

Espacer les tentatives

Un court délai fixe convient pour une recherche interactive isolée, mais une tâche par lots qui relance de nombreux éléments échoués doit espacer progressivement ses tentatives, en doublant l'attente entre chacune jusqu'à un plafond raisonnable, afin qu'une brève panne ne se transforme pas en déluge de nouvelles tentatives dès le rétablissement du service.

429 est un cas à part

Une erreur 429 n'est pas vraiment un échec à relancer, mais plutôt un signal de pause. Lisez l'en-tête X-Quota-Reset et attendez jusqu'à ce moment-là au lieu de relancer après un court délai fixe, car toute nouvelle tentative avant la réinitialisation produira simplement la même erreur 429, encore et encore.

Garder le coût des requêtes à l'esprit

Chaque nouvelle tentative qui atteint le serveur, réussie ou non, est une requête. Une stratégie de nouvelles tentatives qui respecte la différence entre erreurs passagères et erreurs permanentes permet de consacrer votre quota quotidien et votre crédit prépayé à un vrai travail plutôt qu'à des échecs répétés.

Distinguer « réessayez » de « corrigez d'abord ceci » constitue l'essentiel d'une bonne stratégie de nouvelles tentatives. La page des erreurs liste chaque code d'erreur renvoyé par l'API et ce qui déclenche chacun d'eux.