Skip to content

zakhar-petukhov/MicroserviceFastAPI

Repository files navigation

Web App

Использованные библиотеки

Приложение написано на FastAPI, так как он прекрасно подходит для валидации данных и данной задачи.

В качестве ORM для работы с БД использован gino, для миграций-alembic.

Благодаря pydantic очень легко проводить валидацию отсутствующих полей.

pyjwt используется для генерации JWT токенов.

uvicorn - ASGI сервер для разработки

gunicorn - сервер для запуска в проде (с воркером от uvicorn)

psycopg2-binary используется только для миграций

pyyaml использовался для генерации файла openapi.yaml

email-validator для валидации email адресов (для pydantic)

passlib[bcrypt] для генерации паролей с помощью хэш-функции bcrypt.

Настройка и установка

pip install -r requirements.txt
pip install -r dev-requirements.txt
pip install -r requirements/production.txt # для деплоя
sudo -u postgres createdb webapp # создание базы createdb
make migrate # применение миграций
cp .env.sample .env

Для работы приложения необходит секретный ключ JWT, он может быть сгенерирован с помощью

make generatekeys

Затем, в файле .env замените JWT_SECRET_KEY=.... на свой ключ

Так же в файле .env можно настроить CONNECTION URL для подключения к постгресу

Запуск

make dev запускает сервер для разработки

make production запускает сервер для прода, с двумя микросервисами работающими в одном приложении (ASGI mount)

make users запускает микросервис users

make offers запускает микросервис offers

Принятые решения и детали

Приложение разделено на два отдельных микросервиса (offers и users). Каждое из них можно запустить вручную.

Если запускать микросервисы отдельно, они не используют полный путь, например /user/registry. Они используют путь /registry. Это сделано для настройки префиксов через веб прокси (nginx, например).

При запуске сервера с двумя микросервисами сразу, они монтируются под префиками /user и /offer соответственно.

Весь код отформатирован с помощью black и isort и проверен линтером flake8.

Для запуска всех проверок можно использовать make ci.

make format можно использовать для форматирования всего кода.

В проекте использован Makefile для упрощения запуска и настройки приложений.

FastAPI генерирует openapi автоматически, поэтому файл openapi.yaml был так же сгенерирован автоматически.

Настройка APPS в файле common/settings.py используется для автоматической загрузки всех моделей для использования автогенерации миграций (make migration MESSAGE="new revision")

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published