Skip to content

IgoNsk/Roxy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PyRoxy

Веб-сервер для проксирования запросов к сторонни API, с подсчетом нагрузки в промежуток времени и ее лимитированием.

Ключ пользователя определяется из поддомена, к которому обращается пользователь.

Ключ API устанавливается в конфигурации прокси сервера, и нет необходимости его передавать пользователю.

Для хранения информации о кол-ве запросов используется внешний storage-backend Redis.

Установка

sudo apt-get install python34 python3-dev

install.sh

Запуск

python ./server.py --config=./config/example.yml

TODO list

  • написать юнит тесты на используемые классы/модули
  • написать функциональные тесты на работу бизнес логики приложения
  • рефакторинг на соотвестиве 12 факторам
    • вынести все внешние зависимости в environment

Сделано

  • разбирать параметры GET запроса и передавать их в запросе к внешнему API
  • подставлять в GET параметры ключ к API
  • определять протокол (http, https) по протоколу обращения к сервису
  • сделать компонент, который содержит всю необходимую информацию о внешнем API
    • hostname
    • ограничение на кол-во запросов в час
    • ограничение на кол-во запросов в месяц
    • ключи доступа к сервису
    • код ответа и тело ответа, если превышен лимит запросов
  • компонент, для разграничения прав доступа на уровне пользователей
    • домен, за которым закреплен ключ
    • локальные ограничения на кол-во запросов в час/месяц
  • считать кол-во запросов в разрезе часа, месяца
  • сбрасывать счетчики по окончанию подсчетного периода
  • подключить Redis для хранения информации о кол-ве запросов
  • считать ограничения по всему провайдеру и по ключу
  • прикрутить нормальное логирование в stdout
  • отдавать в ответе пользователю информацию о кол-ве оставшихся запросов в заголовках ответа
  • провести нагрузочное тестирование работы сервиса на concurrency запросов
  • полный рефакторинг всего кода приложения
  • оформление в коде коментариев и документации, codestyle

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published