Message de l'API pour une 429

Rate-limiting

a marqué ce sujet comme résolu.

Bonjour à tous,

En développant, j’ai atteint la limite de requête sur l’API. Le corps de la réponse étant le suivant :

1
{ "detail": "Requête ralentie. Expected available in 3.0 seconds." }

Ça signifie quoi "requête ralentie" ? Et pourquoi ce mélange de langue ?

Question un peu HS mais pas trop : pour un programme qui répond aux MPs, vous partiriez sur quel intervalle entre chaque lookup ? 5 secondes ?

J’ai trouvé ton nombre de requêtes par jour assez important, je me demandais comment tu faisais pour ne pas te faire bloquer. ^^

5 secondes = 18k req/jour

30 secondes = 3k req/jour

Je partirai de 30 secondes à 1 minutes en fonction des heures creuses/affluentes. Voir 2-3 minutes la nuit le petit matin pour atteindre 1 à 2k req/jour.

Voir même 5 minutes en cas de non-activité de MP reçu récemment.

Personnellement je ne vois pas trop l’intérêt de 5 sec. (Peut-être au début, car il y a beaucoup de gens qui vont s’ajouter), mais je partirais déjà plus sur quelque chose comme 1min-5min.

WinXaito

Le lieu que le bot sélectionne n’est pas bon pour pas mal de monde, ça leur permet de tester plusieurs valeurs rapidement. Ce que je devrais faire, c’est ajouter un lien vers http://www.openstreetmap.org dans les messages du bot et conseiller de tester les lieux avant.

C’est clair que les 5 secondes ne vont pas rester plus d’une journée.

J’ai trouvé ton nombre de requêtes par jour assez important, je me demandais comment tu faisais pour ne pas te faire bloquer. ^^

Si le staff me demande de baisser, je le ferai avec plaisir. :) (1min maintenant)

Ça signifie quoi "requête ralentie" ?

tleb

En fait lorsque l’API détecte une nombre immense de requête dans un laps de temps très court, il applique le throttling, ce qui signifie que les requêtes que tu lui envoi ne peuvent plus être traitée avant la fin du timing.

La documentation de ZdS donne plus d’information sur les limites. Si tu es authentifié à l’API tu as droit à 2000 requêtes par heure, si tu n’es pas authentifié à l’API tu est limité à 60 requêtes par heure. A la fin de chaque heure ton compteur se remet à zéro.

Tu dois donc t’arranger pour que ton programme ne dépasse pas cette limite.

Et pourquoi ce mélange de langue ?

tleb

C’est un bug dans django rest framework (la lib qui est utilisé sur ZdS pour gérer l’API) qui traduit une partie du message d’erreur dans la langue déclarée dans notre settings.py.

On peut le voir dans ce morceau de code. La variable default_detail est internationalisée mais pas la variable extra_detail_plural ni extra_detail_singular.

Question un peu HS mais pas trop : pour un programme qui répond aux MPs, vous partiriez sur quel intervalle entre chaque lookup ? 5 secondes ?

Si tu passes toujours pas la même clé API, ça dépend du nombre de requêtes HTTP que tu fait à chaque lookup. Si tu lookup toute les 5 secondes avec la même clé, en supposant qu’un lookup c’est un seul GET, tu épuises déjà 720 requêtes dans ton quota horaire. Il ne te reste plus que 1280 requêtes possibles pour consulter les messages et éventuellement poster dans chaque mp que tu as avec tes utilisateurs.

Donc en gros, tout dépend du nombre de tes utilisateurs. Il faut faire le calcul en fonction de ça.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte