Ograniczanie liczby żądań za pomocą Flask-Limiter
Stosuj limity zapytań dla tras i całej aplikacji.
Ograniczanie liczby żądań za pomocą Flask-Limiter to bezpłatna lekcja Flask Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Flask Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Flask Academy zawiera 4 lekcji w sumie.
Po co w ogóle ograniczać ruch
Bez ograniczeń jeden klient może zalać API żądaniami i pozbawić zasobów wszystkich pozostałych. Ograniczanie częstotliwości żądań określa, jak często wywołujący może korzystać z tras.
Poznaj Flask-Limiter
Najczęściej używanym narzędziem jest rozszerzenie Flask-Limiter. Monitoruje ono przychodzące żądania i odrzuca wywołujących, którzy przekroczą przyznany limit.
Instalacja
Dodaje się je za pomocą pip, tak jak każde inne rozszerzenie. Jeden pakiet udostępnia dekoratory i konfigurację do ograniczania ruchu.
pip install Flask-LimiterIdentyfikowanie wywołującego
Limiter potrzebuje klucza, według którego będzie zliczać żądania. Zwykle używa się adresu IP klienta za pośrednictwem wbudowanej funkcji pomocniczej get_remote_address.
from flask_limiter.util import get_remote_addressTworzenie limitera
Tworzysz obiekt Limiter i wiążesz go z aplikacją. Funkcja klucza określa, komu przypisać każde żądanie.
limiter = Limiter(get_remote_address, app=app)Ustawianie domyślnego limitu
Lista default_limits nakłada jeden limit na wszystkie trasy jednocześnie. To zabezpieczenie dla całej aplikacji.
limiter = Limiter(get_remote_address, app=app,
default_limits=["200 per day", "50 per hour"])Limity dla poszczególnych tras
Za pomocą dekoratora @limiter.limit możesz zaostrzyć limit pojedynczego endpointu. Ta trasa otrzyma własną, bardziej restrykcyjną regułę.
@app.route("/login")
@limiter.limit("5 per minute")
def login():
...Odczytywanie zapisu limitu
Zapis przypomina zwykłe zdanie w języku naturalnym. 5 per minute oznacza, że wywołujący może odwołać się do tej trasy pięć razy w ciągu minuty.
"5 per minute"Znaczenie kodu 429
Po przekroczeniu limitu Flask-Limiter zwraca 429 Too Many Requests. To uprzejmy sposób powiedzenia: proszę zwolnić.
Wyłączanie limitu dla trasy
Niektóre endpointy, na przykład endpoint sprawdzający stan aplikacji, nigdy nie powinny podlegać ograniczeniom. Oznacz je za pomocą @limiter.exempt, aby pominąć wszystkie limity.
@app.route("/health")
@limiter.exempt
def health():
return "ok"Używanie współdzielonego backendu
W produkcji działa wiele procesów aplikacji, dlatego liczniki muszą być przechowywane we współdzielonym storage_uri, na przykład w Redisie, a nie w pamięci.
Limiter(get_remote_address, app=app,
storage_uri="redis://localhost:6379")Szybkie sprawdzenie
Wybierz kod statusu otrzymywany przez klienta objętego ograniczeniem.
Podsumowanie
Dodano Flask-Limiter, oparto limity na adresie IP, ustawiono limity domyślne i dla poszczególnych tras, wyłączono ograniczenia dla endpointów sprawdzających stan aplikacji oraz poznano odpowiedź 429. Świetna praca!
Często zadawane pytania
Czy lekcja „Ograniczanie liczby żądań za pomocą Flask-Limiter” jest bezpłatna?
Tak — pełny tekst „Ograniczanie liczby żądań za pomocą Flask-Limiter” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Flask Academy, przejdź na CoddyKit PRO. Kurs Flask Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Ograniczanie liczby żądań za pomocą Flask-Limiter”?
Stosuj limity zapytań dla tras i całej aplikacji. Ćwiczysz Flask Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Flask Academy?
Nie wymagamy żadnego doświadczenia. Flask Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.
Ile czasu zajmuje lekcja „Ograniczanie liczby żądań za pomocą Flask-Limiter”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Flask Academy?
Tak. Każda lekcja Flask Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Ograniczanie liczby żądań za pomocą Flask-Limiter
- Konfiguracja CORS dla klientów przeglądarkowych
- Nagłówki bezpieczeństwa i HTTPS
- Walidacja danych wejściowych przeciwko wstrzyknięciom