Rate Limiting (limitowanie zapytań)
Rate Limiting to mechanizm ochronny, który ogranicza liczbę żądań API w danym oknie czasowym, aby zapewnić uczciwe korzystanie i stabilność systemu. Po przekroczeniu limitu otrzymujesz odpowiedź HTTP 429 z nagłówkiem Retry-After.
Czym jest Rate Limiting?
Rate Limiting (limitowanie zapytań) kontroluje, ile żądań do API klient może wysłać w określonym czasie – np. 100 żądań na minutę lub 10 000 wiadomości dziennie. Limity te chronią infrastrukturę API przed przeciążeniem i zapewniają wszystkim klientom równy dostęp. Bez limitowania zapytań jeden wadliwy bot mógłby wysyłać tysiące żądań na sekundę i spowolnić usługę dla wszystkich pozostałych.
Technicznie limitowanie zapytań realizuje się najczęściej za pomocą algorytmów Token Bucket lub Sliding Window. Każdy klucz API ma "budżet" żądań, który stale się uzupełnia. Gdy wysyłasz żądanie, zużywasz jeden token. Gdy wszystkie tokeny się wyczerpią, musisz poczekać, aż pojawią się nowe. SendSeven stosuje uczciwy, przejrzysty system z jasnymi komunikatami o błędach i wskazówkami dotyczącymi ponowienia.
Dlaczego istnieją limity zapytań?
Stabilność systemu: API współdzielą zasoby (procesor, baza danych, sieć). Pojedynczy "złośliwy" klient mógłby bez limitów sparaliżować cały system – Rate Limiting zapobiega takim scenariuszom typu Denial of Service.
Uczciwe korzystanie: wszyscy klienci powinni czerpać korzyści w równym stopniu. Jeśli jeden klient zużyje 90% przepustowości, inni na tym tracą. Limity zapytań dbają o sprawiedliwość.
Kontrola kosztów: przypadkowe nieskończone pętle w kodzie mogłyby bez limitów wysłać miliony żądań – i wygenerować odpowiadające im koszty. Rate Limiting działa jak hamulec awaryjny.
Ochrona przed nadużyciami: spamerzy i atakujący często próbują zalać API. Limity zapytań sprawiają, że takie ataki stają się nieopłacalne i łatwiejsze do wykrycia.
Obsługa odpowiedzi HTTP 429
Po przekroczeniu limitu zapytań API odpowiada kodem HTTP 429 (Too Many Requests). Nagłówek odpowiedzi zawiera ważne informacje:
HTTP/1.1 429 Too Many Requests Retry-After: 60 X-RateLimit-Limit: 100 X-RateLimit-Remaining: 0 X-RateLimit-Reset: 1676543210
Retry-After: ile sekund musisz odczekać przed kolejnym dozwolonym żądaniem.
X-RateLimit-Limit: Twój całkowity limit (np. 100 żądań/minutę).
X-RateLimit-Remaining: ile żądań jest jeszcze dostępnych (tutaj: 0).
X-RateLimit-Reset: znacznik czasu Unix wskazujący, kiedy limit zostanie zresetowany.
Profesjonalne aplikacje implementują Exponential Backoff: po błędzie 429 nie czekasz po prostu stałe 60 sekund, lecz podwajasz czas oczekiwania przy każdym kolejnym błędzie (1 s, 2 s, 4 s, 8 s, ...). Zapobiega to problemom typu "Thundering Herd", w których tysiące klientów jednocześnie ponawiają żądania i ponownie przeciążają system.
Limity zapytań w SendSeven
SendSeven stosuje uczciwe, hojne limity zapytań, które wystarczają dla zdecydowanej większości zastosowań. Typowe wartości (zależne od Twojego planu):
- Żądania API: 100 żądań na minutę (dla operacji odczytu)
- Wysyłka wiadomości: 1 000 wiadomości na godzinę (ochrona antyspamowa)
- Dostarczanie webhooków: 10 równoległych połączeń
Konkretne limity znajdziesz w dokumentacji API na docs.sendseven.com. Jeśli potrzebujesz wyższych limitów (np. do importów masowych lub kampanii z ponad 100 000 odbiorców), skontaktuj się ze wsparciem – indywidualne dostosowania są możliwe.
Najlepsza praktyka: zaimplementuj limitowanie zapytań po stronie klienta już w swojej aplikacji. Wykorzystaj kolejki (np. Bull dla Node.js, Celery dla Pythona), aby przetwarzać żądania w sposób kontrolowany – dzięki temu unikniesz błędów 429 od samego początku i zoptymalizujesz koszty.