Инструмент для тестирования лимитов частоты запросов к API с динамической адаптацией интервалов.
Этот проект представляет собой Python-скрипт для тестирования ограничений частоты запросов (rate limiting) различных API. Инструмент автоматически адаптирует интервалы между запросами, чтобы найти максимальную допустимую частоту запросов к конкретному API.
- 🔄 Динамическая адаптация интервалов - автоматическое уменьшение интервалов при успешных запросах
- 📊 Подробная статистика - отслеживание успешных/неудачных запросов и времени ответа
- 🚦 Определение лимитов - автоматическое обнаружение достижения лимитов (HTTP 429)
- 📈 Анализ производительности - расчет средней скорости ответа и максимальной частоты запросов
- 🛡️ Обработка ошибок - корректная обработка таймаутов и исключений
- 📋 Детальное логирование - пошаговый вывод результатов каждого запроса
pip install requestsfrom test import APIRateLimitTester
# Создание тестера
tester = APIRateLimitTester(
url="https://api.example.com/endpoint",
headers={'Authorization': 'Bearer YOUR_TOKEN'},
max_requests=1000,
initial_interval=0.01
)
# Запуск тестирования
tester.test_rate_limit()# Для торговых API
headers = {
'User-Agent': 'Rate-Limit-Tester/1.0',
'Authorization': 'Bearer YOUR_API_KEY',
'X-API-KEY': 'YOUR_API_KEY'
}
tester = APIRateLimitTester(
url="https://api.binance.com/api/v3/ping",
headers=headers,
max_requests=200,
initial_interval=0.05 # Начальный интервал 50ms
)
tester.test_rate_limit()url- URL API для тестированияheaders- HTTP заголовки (авторизация, User-Agent и т.д.)max_requests- максимальное количество запросов (по умолчанию: 1000)initial_interval- начальный интервал между запросами в секундах (по умолчанию: 0.01)
- Начальный интервал - начинаем с заданного интервала между запросами
- Динамическое уменьшение - каждые 50 успешных запросов уменьшаем интервал на 20%
- Обнаружение лимитов - при получении HTTP 429 (Too Many Requests) останавливаем тест
- Адаптация к ошибкам - при серверных ошибках увеличиваем интервал
- Статистика - собираем данные о времени ответа и успешности запросов
Начинаем тестирование API: https://api.example.com/endpoint
Начальный интервал: 0.050s
------------------------------------------------------------
# 1 | SUCCESS | 200 | 0.123s | 14:30:15.123
# 2 | SUCCESS | 200 | 0.098s | 14:30:15.173
...
# 50 | SUCCESS | 200 | 0.089s | 14:30:17.456
Уменьшаем интервал до 0.040s
...
# 150 | RATE LIMIT | 429 | 0.045s | 14:30:19.789
Информация о лимитах:
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 0
Retry-After: 60
============================================================
ИТОГОВАЯ СТАТИСТИКА:
Успешных запросов: 149
Неудачных запросов: 1
Всего запросов: 150
Среднее время ответа: 0.095s
⚠️ Достигнут лимит частоты запросов
Примерная максимальная частота: 25.3 запросов/сек
Этот инструмент полезен для:
- 🏦 Финансовых API - тестирование лимитов торговых платформ
- 🔌 Интеграций - определение оптимальной частоты запросов
- 🧪 Разработки - тестирование собственных API
- 📊 Мониторинга - проверка производительности внешних сервисов
- Python 3.6+
- requests
MIT License
Приветствуются любые улучшения и дополнения! Создавайте issues и pull requests.