flexway
FRENParler à un expert

Débit, quotas et 429

GuideDéveloppeursDepuis la version 0.1.0

Markdown

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 r

Pour Kafka, le débit se dit par throttle_time_ms : voir clients Kafka.

Étapes suivantes