https://github.com/lowfie/processingservice
A service for processing a high load of data and presenting aggregated information in a convenient form
https://github.com/lowfie/processingservice
docker fastapi pydantic python sqlalchemy
Last synced: about 2 months ago
JSON representation
A service for processing a high load of data and presenting aggregated information in a convenient form
- Host: GitHub
- URL: https://github.com/lowfie/processingservice
- Owner: lowfie
- Created: 2024-05-12T02:04:27.000Z (about 2 years ago)
- Default Branch: master
- Last Pushed: 2024-05-16T12:05:32.000Z (about 2 years ago)
- Last Synced: 2025-02-22T08:27:05.969Z (over 1 year ago)
- Topics: docker, fastapi, pydantic, python, sqlalchemy
- Language: Python
- Homepage:
- Size: 79.1 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Processing Service
## Описание
Сервис для обработки высокой нагрузки данных и представления агрегированной информацию в удобной форме.
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`
## Make команды
1. init - инициализация включающая в себя пул команд
2. up/down/restart - запуск/остановка/перезагрузка приложения
3. logs- - просмотр логов (logs просмотр логов api)
4. shell- - открытие интерактивной консоли (shell запуск python терминала приложения)
5. revision - сделать миграцию
6. upgrade - инициализировать +1 миграцию от предыдущей
7. upgrade-head - инициализация всех миграций
8. downgrade - откатиться на -1 миграцию
9. clean-migrations - отчистка всех миграций
10. clean - полная чистка базы данных и миграций
11. create-admin - создание админа
## Технологии
- Python 3.12
- FastApi [uvicorn]
- Pydantic 2
- SQLAlchemy [asyncpg]
- PostgresSQL 15
- Docker, Docker compose
- Poetry
## Нюансы
Я не хешировал пароли в базе данных,
так как это демонстрационный пример источников (пользователей)
В директории `src/scripts/populate.py` можно создать нагрузку для создания данных.
В нём нужно указать количество источников, ивентов в секунду от источников,
токен авторизации источника (пользователя), лимит на количество итераций.
Также можно добавить админ панель, используя SQLAdmin.
Нагрузочное тестирование проводил в мануальном режиме.