Калькулятор rate limit API для расчёта оставшихся запросов, безопасной задержки и времени до сброса лимита. Удобный инструмент с примерами и формулами расчёта.
Рассчитайте оставшиеся запросы, безопасную задержку и время до сброса лимита вашего API за пару секунд.
Оставшиеся запросы = Общий лимит − Использовано запросов
Оставшееся время = Период окна − Прошло времени
Использовано лимита (%) = (Использовано запросов / Общий лимит) × 100
Текущая скорость = Использовано запросов / Прошло времени
Безопасная задержка = Оставшееся время / Оставшиеся запросы
Время до исчерпания = Оставшиеся запросы / Текущая скорость
Калькулятор работает по логике фиксированного временного окна (fixed window). Сначала вычисляется, сколько запросов у вас ещё осталось до достижения лимита. Затем определяется, сколько времени осталось до сброса окна. На основе этих данных рассчитывается максимальная безопасная частота — задержка между запросами, при которой вы не превысите лимит до конца окна. Если текущая скорость известна, калькулятор прогнозирует, через сколько секунд лимит будет полностью исчерпан.
Что такое фиксированное окно? Это период (например, 60 секунд), внутри которого действует лимит. По истечении окна счётчик сбрасывается, и лимит обновляется.
Чем скользящее окно отличается от фиксированного? Скользящее окно учитывает запросы за последние N секунд непрерывно, без жёстких границ сброса. Оно более гибкое и сложное в реализации.
Почему безопасная задержка так важна? Она показывает, с какой максимальной частотой можно слать запросы, чтобы не упереться в лимит до конца окна. Превышение этой частоты гарантированно приведёт к ошибке 429.
Можно ли обойти rate limit? Технически — нет. Можно использовать кэширование, пакетные запросы (batch API) или увеличить тарифный план, если провайдер предоставляет такую возможность.
Что делать при получении ошибки 429 Too Many Requests? Прекратить отправку, дождаться времени, указанного в заголовке Retry-After, и повторить запрос. Реализуйте экспоненциальную задержку (exponential backoff).
Расчёт основан на стандартной модели фиксированного временного окна (fixed window rate limiting), широко применяемой в публичных API. Методология соответствует рекомендациям IETF по ограничению частоты запросов и документациям популярных сервисов: GitHub REST API, Twitter API v2, Stripe API, OpenWeather API. Заголовки X-RateLimit-* описаны в спецификациях HTTP API большинства современных платформ.
Rate Limit (ограничение частоты запросов) — это механизм, который контролирует количество обращений клиента к серверу за определённый промежуток времени. Представьте шлагбаум на въезде в тоннель: он пропускает только определённое число машин в минуту, чтобы избежать пробки и аварий. Так и API-сервер ограничивает поток запросов, чтобы оставаться доступным для всех пользователей.
Без rate limiting один клиент с ошибкой в коде мог бы посылать тысячи запросов в секунду и полностью вывести сервер из строя. Ограничения защищают инфраструктуру, обеспечивают справедливое распределение ресурсов и предотвращают DDoS-атаки на уровне приложения.
Существует несколько классических алгоритмов rate limiting. Самый простой — фиксированное окно (fixed window). Сервер задаёт интервал, например 60 секунд, и считает запросы внутри него. Когда окно закрывается, счётчик обнуляется. Недостаток: в конце одного окна и начале следующего можно удвоить нагрузку, отправив лимит дважды за пару секунд.
Скользящее окно (sliding window) более справедливо: оно учитывает запросы за последние N секунд непрерывно, сглаживая пики на стыках периодов. Token bucket (ведро токенов) — это резервуар, который наполняется токенами с постоянной скоростью. Каждый запрос забирает один токен. Если ведро пусто — запрос отклоняется. Этот алгоритм позволяет короткие всплески активности без превышения среднего лимита.
Leaky bucket (дырявое ведро) работает как очередь с фиксированной скоростью вытекания: запросы становятся в очередь и обрабатываются строго по расписанию. Избыточные запросы отбрасываются. Этот метод чаще применяется в сетевых технологиях, чем в HTTP API.
Большинство современных API возвращают в ответе специальные HTTP-заголовки. X-RateLimit-Limit показывает общий лимит на окно. X-RateLimit-Remaining — сколько запросов осталось. X-RateLimit-Reset — timestamp в секундах, когда окно сбросится. Например, GitHub для запроса к /users/octocat возвращает: Limit: 60, Remaining: 56, Reset: 1645678900. Это значит, что у вас осталось 56 запросов из 60, и сброс произойдёт в указанное Unix-время.
Некоторые сервисы добавляют Retry-After при ошибке 429 — это количество секунд, через которое можно повторить запрос. Уважайте эти заголовки: они точнее любых ваших расчётов, потому что сервер знает своё состояние лучше клиента.
GitHub REST API даёт 5000 запросов в час для аутентифицированных пользователей и всего 60 для анонимных. Twitter API v2 на базовом тарифе разрешает 1 запрос в 15 минут к некоторым эндпоинтам и 450 запросов в 15 минут к другим. Stripe API оперирует окном в 1 секунду: до 100 запросов в секунду для большинства операций, но для тяжёлых (например, создание invoice) — до 25 в секунду. OpenWeather на бесплатном плане даёт 60 вызовов в минуту.
Зная эти цифры, можно спланировать архитектуру. Если вы интегрируетесь с GitHub и ожидаете 1000 запросов в час — вы в безопасности. Если нужно 10 000 — потребуется кэширование или распределение по токенам нескольких пользователей.
Когда клиент получает HTTP-статус 429 Too Many Requests, это означает исчерпание квоты. Лучшая стратегия — экспоненциальный backoff: первая пауза 1 секунда, затем 2, 4, 8, 16 и так далее, до максимального ожидания (например, 60 секунд). Такой подход снижает нагрузку и даёт серверу время восстановиться. Некоторые библиотеки, например axios-retry, делают это автоматически.
В production-коде никогда не игнорируйте 429. Логируйте факт превышения и настраивайте алерты: если лимит достигается регулярно, пора пересмотреть архитектуру или тарифный план.
Отслеживать состояние лимитов можно через логирование заголовков каждого ответа. Соберите метрики: текущий остаток, процент использования, скорость расхода. Отправляйте их в Grafana или Datadog для визуализации. На дашборде удобно видеть график оставшихся запросов: когда кривая приближается к нулю — это сигнал к действию.
Для микросервисной архитектуры применяйте распределённые счётчики на Redis или Memcached. Алгоритм token bucket легко реализуется через Redis-ключи с TTL. Библиотеки типа bottleneck (Node.js) или ratelimit (Go) берут на себя всю сложность.
При разработке клиента API всегда закладывайте запас 15–20% от лимита. Если лимит 100 запросов в минуту, считайте рабочим потолком 80. Это защитит от случайных всплесков и погрешностей синхронизации. Внедрите локальную очередь с приоритетами: критические запросы (платёж, отправка сообщения) должны идти вне очереди, а фоновые задачи можно отложить.
Кэшируйте ответы там, где это возможно. Если данные меняются редко (раз в час), нет смысла запрашивать их каждую минуту. Сохраните ответ локально с TTL и обращайтесь к API только при истечении кэша. Это снижает расход лимита в разы.
Задайте вопрос по этому калькулятору
Осталось вопросов: 5. Только по этому инструменту.
Нужен другой инструмент?
Все инструменты в категории