Skip to content

AlekMel/api-test-freq

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 

Repository files navigation

API Rate Limit Tester

Инструмент для тестирования лимитов частоты запросов к API с динамической адаптацией интервалов.

Описание

Этот проект представляет собой Python-скрипт для тестирования ограничений частоты запросов (rate limiting) различных API. Инструмент автоматически адаптирует интервалы между запросами, чтобы найти максимальную допустимую частоту запросов к конкретному API.

Возможности

  • 🔄 Динамическая адаптация интервалов - автоматическое уменьшение интервалов при успешных запросах
  • 📊 Подробная статистика - отслеживание успешных/неудачных запросов и времени ответа
  • 🚦 Определение лимитов - автоматическое обнаружение достижения лимитов (HTTP 429)
  • 📈 Анализ производительности - расчет средней скорости ответа и максимальной частоты запросов
  • 🛡️ Обработка ошибок - корректная обработка таймаутов и исключений
  • 📋 Детальное логирование - пошаговый вывод результатов каждого запроса

Установка

pip install requests

Использование

Базовое использование

from 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)

Алгоритм работы

  1. Начальный интервал - начинаем с заданного интервала между запросами
  2. Динамическое уменьшение - каждые 50 успешных запросов уменьшаем интервал на 20%
  3. Обнаружение лимитов - при получении HTTP 429 (Too Many Requests) останавливаем тест
  4. Адаптация к ошибкам - при серверных ошибках увеличиваем интервал
  5. Статистика - собираем данные о времени ответа и успешности запросов

Пример вывода

Начинаем тестирование 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.

About

Этот проект представляет собой Python-скрипт для тестирования ограничений частоты запросов (rate limiting) различных API. Инструмент автоматически адаптирует интервалы между запросами, чтобы найти максимальную допустимую частоту запросов к конкретному API.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages