Débit, quotas et 429
GuideDéveloppeursDepuis la version 0.1.0
Sur cette page
Comment la passerelle vous dit de ralentir, et comment un client bien écrit s'y règle.
Côté produit : Contrôle du trafic et quotas ; côté exploitation : Poser des quotas.
Les en-têtes
| En-tête | Quand | Sens |
|---|---|---|
RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset |
Sur toute réponse limitée, succès compris | Ralentissez avant d'être refusé |
Retry-After |
429, 503 |
Secondes à attendre |
Les refus
| Réponse | Sens | Attente |
|---|---|---|
429 rate_limited |
Votre débit (par identité, par classe ou par opération) | Retry-After, quelques secondes |
429 quota_exceeded |
Le quota de votre tenant pour le jour ou le mois (UTC) | Retry-After jusqu'à la fin de la fenêtre |
429 budget_exceeded |
Budget d'inférence du tenant (inférence) | Fin de la fenêtre |
503 overloaded |
La passerelle déleste sous saturation (Flexway-Degraded: shedding) |
Retry-After |
Le débit compte par identité (sujet du jeton, clé d'API, certificat), pas par adresse. Un succès de cache compte aussi.
import random, time, requests
def call(url, **kw):
for attempt in range(5):
r = requests.get(url, **kw)
if r.status_code not in (429, 503):
return r
wait = int(r.headers.get("Retry-After", 1))
time.sleep(wait + random.uniform(0, wait / 2)) # gigue : n'arrivez pas tous ensemble
return rPour Kafka, le débit se dit par throttle_time_ms : voir clients Kafka.