HTTP-сервис для ограничения количества запросов (rate limiting) из одной подсети IPv4. При превышении лимита возвращает сообщение об ошибке, в противном случае — статический контент.
- 📈 Ограничение количества запросов по подсети IPv4
- 🧠 Хранение статистики запросов в Redis
- 🔄 Сброс статистики по подсети через API
- 🐳 Развёртывание с использованием Docker Compose
- 🧪 Тестирование с использованием unittest
- Python 3.10+
- Flask
- Redis
- python-dotenv
- unittest
- Docker & Docker Compose
-
Клонируйте репозиторий:
git clone https://github.com/artem-sitd/request_rate_limit.git cd request_rate_limit -
Настройте переменные окружения:
Переименуйте файл
.env.docker.templateв.env.docker:cp .env.docker.template .env.docker
Отредактируйте файл
.env.docker, указав необходимые значения:REDIS_HOST— хост RedisREDIS_PORT— порт RedisRATE_LIMIT— максимальное количество запросов за периодRATE_PERIOD— период в секундах для ограничения запросов
-
Запустите приложение с помощью Docker Compose:
docker-compose up --build
Приложение будет доступно по адресу
http://localhost:5000.
├── app/ # Основная логика приложения
├── tests/ # Тесты unittest
├── .env.docker.template # Шаблон переменных окружения
├── docker-compose.yaml # Конфигурация Docker Compose
├── main.py # Точка входа в приложение
├── pyproject.toml # Зависимости проекта
└── README.md # Документация проекта
Проект распространяется под лицензией MIT. Подробнее см. файл LICENSE.