429 Too Many Requests

Klient wysyła żądania zbyt szybko.

Kiedy go używać

Ograniczanie liczby żądań (rate limiting). Dołącz nagłówek Retry-After.

Typowe przyczyny i rozwiązania

Trafiłeś na limit żądań. Odczytaj nagłówek Retry-After, podany w sekundach lub jako data HTTP, oraz ewentualne nagłówki RateLimit lub X-RateLimit-Remaining, a potem wycofaj się z wykładniczo rosnącymi opóźnieniami i jitterem, zamiast od razu ponawiać. Typowe źródła: limity API na klucz lub IP, reguły rate limitingu w Cloudflare, ograniczanie prób logowania oraz limit_req w nginx, który zwraca 503, chyba że ustawisz limit_req_status 429.

Wielu użytkowników za jednym NAT-em lub firmowym proxy może wspólnie przekroczyć limit na IP. Jeśli limiter działa za load balancerem, opieraj go na prawdziwym IP klienta z X-Forwarded-For, inaczej wszyscy użytkownicy dzielą adres i limit balancera. Po stronie klienta grupuj żądania, cache'uj odpowiedzi i dodawaj losowe opóźnienie do zaplanowanych zadań, żeby nie startowały wszystkie w tej samej sekundzie.

Błąd klienta (4xx)

Kody 4xx to błędy klienta: samo żądanie jest błędne, nieautoryzowane albo wskazuje na coś, czego nie ma. Ponowienie tego samego żądania nic nie da.

Jak to wygląda

HTTP/1.1 429 Too Many Requests

Jak go wysłać

Node.js / Expressres.status(429).end()
Python / Flaskreturn '', 429
nginxreturn 429;

Jak go sprawdzić

curl -s -o /dev/null -w "%{http_code}\n" https://example.com/

Otwórz narzędzie Kody statusu HTTP