Сервис для обработки высокой нагрузки данных и представления агрегированной информацию в удобной форме.
Swagger - http://localhost:8000/api/v1/docs
entrypoint - src/api/main.py
В корне проекта создать .env
файл, пример .env.example
файл.
В src/config/files
создать dev.yaml
или production.yaml
, пример файла находится в этой же директории.
Команда make init
Команда make up
Команда make revision upgrade
Команда make create-admin
- init - инициализация включающая в себя пул команд
- up/down/restart - запуск/остановка/перезагрузка приложения
- logs- - просмотр логов (logs просмотр логов api)
- shell- - открытие интерактивной консоли (shell запуск python терминала приложения)
- revision - сделать миграцию
- upgrade - инициализировать +1 миграцию от предыдущей
- upgrade-head - инициализация всех миграций
- downgrade - откатиться на -1 миграцию
- clean-migrations - отчистка всех миграций
- clean - полная чистка базы данных и миграций
- create-admin - создание админа
- Python 3.12
- FastApi [uvicorn]
- Pydantic 2
- SQLAlchemy [asyncpg]
- PostgresSQL 15
- Docker, Docker compose
- Poetry
Я не хешировал пароли в базе данных, так как это демонстрационный пример источников (пользователей)
В директории src/scripts/populate.py
можно создать нагрузку для создания данных.
В нём нужно указать количество источников, ивентов в секунду от источников,
токен авторизации источника (пользователя), лимит на количество итераций.
Также можно добавить админ панель, используя SQLAdmin. Нагрузочное тестирование проводил в мануальном режиме.