HTTP 429 Too Many Requests: attendi e riprova nel modo giusto

HTTP 429 Too Many Requests

HTTP 429 Too Many Requests: Retry-After e backoff | We.Inc

Cosa significa uno stato 429, come leggere Retry-After e codice di retry con backoff esponenziale e jitter. Pianifica il tuo calendario di retry con il calcolatore.

Una risposta 429 significa che il server ti sta applicando un rate limit: questo client ha inviato in una finestra di tempo più richieste di quante ne consenta. Smetti di inviare per un po'. Se la risposta contiene un header Retry-After, attendi quel tempo; altrimenti riprova con un backoff esponenziale più un jitter casuale, così molti client non riprovano tutti nello stesso istante.

Leggere una risposta 429

Imposta il primo ritardo, il tetto massimo e quanti retry consenti, poi scegli uno stile di jitter. Il calcolatore elenca l'intervallo di attesa per ogni tentativo e il totale nel caso peggiore, così puoi vedere se il tuo client si arrende prima che la finestra del server si azzeri.

Domande frequenti

Il 429 è un errore del client o del server?

Appartiene alla classe 4xx, quindi descrive il comportamento del client: troppe richieste. Sul server non c'è nulla di rotto. La soluzione è inviare meno richieste o distribuirle nel tempo.

Cosa contiene Retry-After?

Un numero di secondi da attendere, come 120, oppure una data HTTP dopo la quale puoi riprovare. Il tuo client dovrebbe gestire entrambe le forme.

Perché aggiungere il jitter al backoff esponenziale?

Senza jitter ogni client che ha fallito nello stesso momento riprova di nuovo nello stesso momento, ricreando il picco. Un'attesa casuale dentro ogni finestra distribuisce i retry.

Perché il rate limit di nginx restituisce 503 invece di 429?

Il modulo limit_req rifiuta con 503 a meno che tu non lo cambi. Aggiungi limit_req_status 429; accanto alla riga limit_req così i client vedono il codice più preciso.

Una CDN può mettere in cache una risposta 429?

Non deve. La RFC 6585 dice che le risposte con codice di stato 429 non devono essere salvate da una cache, così ogni client riceve una risposta aggiornata quando il limite viene rimosso.

Chi invia 429 e perché

I tre stili di backoff del calcolatore

Codice client che rispetta il 429

fetch con Retry-After e full jitter

Legge entrambe le forme di Retry-After, ripiega sul full jitter e si ferma dopo un numero fisso di retry.

Inviare 429 dal tuo server

nginx: limite per IP e risposta con 429

limit_req rifiuta con 503 di default; limit_req_status lo cambia in 429.

Com'è fatta la risposta

Un body breve che spiega il limite, e un Retry-After in secondi.

Calcolatore del calendario di retry

Ritardo base (ms)

Tetto per attesa (ms)

Retry

Stile di jitter

Full jitter

Equal jitter

Nessun jitter

Attesa prima di ogni retry

Retry

Attesa minima

Attesa massima

Caso peggiore prima di arrendersi: {v}

Usa numeri interi maggiori di zero, con il tetto almeno pari al ritardo base.

Inizia gratis · Nessuna carta di credito richiesta

Correlati: Guide

Prodotto

Per chi è

Funzionalità

Risorse

Azienda

Mappa del sito