Rate limiting (ограничение частоты запросов) - Механизм, который контролирует, как часто клиент может обращаться к сервису.
Как работает?
Задаём лимит:
→ 100 запросов в минуту с одного IP
→ 10 запросов в секунду на пользователя
→ 1000 в час на весь API-ключ
Считаем запросы:
→ Каждое обращение увеличивает счётчик
→ Счётчик сбрасывается по таймеру (окно времени)
Принимаем решение:
✅ В лимите → обрабатываем запрос
❌ Превысил → возвращаем 429 Too Many Requests + заголовок Retry-After: 30
Зачем нужен?
✅ Защищает от перегрузки
Не даёт одному клиенту «положить» сервис для всех
✅ Предотвращает атаки
Brute-force, DDoS, скрейпинг — получают вежливый отпор
✅ Честное распределение ресурсов
Все пользователи получают равный доступ
✅ Экономит деньги
Меньше лишних запросов → меньше нагрузка → меньше счёт за облако
✅ Даёт обратную связь
Заголовок Retry-After подсказывает, когда можно попробовать снова
Пример из жизни:
Без Rate Limiting:
Бот отправляет 10 000 запросов в секунду →
База данных захлёбывается →
Реальные пользователи видят «503 Service Unavailable»
С Rate Limiting:
Бот получает 429 после 100-го запроса →
Остальные пользователи работают нормально →
Бот учится делать паузы (или уходит к конкурентам)
Мораль:
429 — это не «иди прочь».
Это «приходи чуть позже — и всё получится» 🤝
Post #74
216

- 👍 5