Веб-сервер для проксирования запросов к сторонни API, с подсчетом нагрузки в промежуток времени и ее лимитированием.
Ключ пользователя определяется из поддомена, к которому обращается пользователь.
Ключ API устанавливается в конфигурации прокси сервера, и нет необходимости его передавать пользователю.
Для хранения информации о кол-ве запросов используется внешний storage-backend Redis.
sudo apt-get install python34 python3-dev
install.sh
python ./server.py --config=./config/example.yml
- написать юнит тесты на используемые классы/модули
- написать функциональные тесты на работу бизнес логики приложения
- рефакторинг на соотвестиве 12 факторам
- вынести все внешние зависимости в environment
- разбирать параметры GET запроса и передавать их в запросе к внешнему API
- подставлять в GET параметры ключ к API
- определять протокол (http, https) по протоколу обращения к сервису
- сделать компонент, который содержит всю необходимую информацию о внешнем API
- hostname
- ограничение на кол-во запросов в час
- ограничение на кол-во запросов в месяц
- ключи доступа к сервису
- код ответа и тело ответа, если превышен лимит запросов
- компонент, для разграничения прав доступа на уровне пользователей
- домен, за которым закреплен ключ
- локальные ограничения на кол-во запросов в час/месяц
- считать кол-во запросов в разрезе часа, месяца
- сбрасывать счетчики по окончанию подсчетного периода
- подключить Redis для хранения информации о кол-ве запросов
- считать ограничения по всему провайдеру и по ключу
- прикрутить нормальное логирование в stdout
- отдавать в ответе пользователю информацию о кол-ве оставшихся запросов в заголовках ответа
- провести нагрузочное тестирование работы сервиса на concurrency запросов
- полный рефакторинг всего кода приложения
- оформление в коде коментариев и документации, codestyle