Эта установка нужна для запуска бэкенда локально и запуска форматеров, линтеров и тайп чекеров перед каждым коммитом. Для корректной работы требуется Python 3.12
pip install poetry==1.8.2
poetry install
pre-commit install
Сначала нужно запустить зависимости (нужен настроенный docker):
docker compose up -d --wait
Запуск бэкенда локально:
uvicorn app.main:app --port 5000 --reload
Остановить зависимости:
docker compose down
После запуска приложения становятся доступны следующие порты и ссылки:
5432
: порт для подключения к базе данных PostgreSQL5672
: порт для подключения к брокеру сообщений RabbitMQhttp://localhost:15672
: management-консоль для RabbitMQ (логин и пароль: guest)http://localhost:5100
: автоматическая OpenAPI-документация основного приложения
Запуск тестов локально (в виртуальном окружении):
pytest tests
С проверкой покрытия:
pytest tests --cov=.
- Создать новую конфигурацию: Edit Configurations > + > pytest
- Настроить путь: Script Path > Выбор папки (выбрать папку tests)
- Настроить рабочую директорию: Environment > Working directory > Выбор папки (выбрать корень проекта)
- (опционально) В Additional Arguments добавить
--cov=.
для проверки покрытия
Отчёт о покрытии кода можно получить командой:
coverage report
После аппрува задачи, в которой были изменения в БД, нужно написать миграцию. В этом поможет автоматическая генерация миграций через alembic, описанная ниже
Для начала нужно выключить приложение и отчистить базу данных:
docker compose down
Затем можно сбилдить и запустить контейнер для миграций:
docker compose run --build --rm -ti alembic
Должен открыться терминал (sh), в котором уже будет можно запускать команды alembic-а:
alembic upgrade head
alembic revision --autogenerate -m "<message>" --rev-id "<issue>"
- Python 3.12
- FastAPI
- SQLAlchemy 2.0 (async)
- Poetry
- Linters (flake8, wemake-style-guide, mypy)
- Formatters (black, autoflake)
- Pre-commit
- Pytest
Версии можно найти в pyproject.toml
mq
: локальный брокер RabbitMQ, сбрасывается при рестартеdb
: локальная база данных PostgreSQL для тестов и проверок, сбрасывается при рестартеalembic
: специальный контейнер для работы с миграциями, работает только с--profile migration
app
: докеризированное приложение основного API сервиса, сделано для полных проверок и работает только с--profile app
# запустить все вспомогательные сервисы для локальной разработки
docker compose up -d
# выключить обратно
docker compose down
# тоже самое, но вместе с докеризированным приложением
docker compose --profile app up -d
docker compose --profile app down
# смотреть логи в реальном времени
docker compose logs --follow <сервис>
docker compose logs --follow mq # пример
# проверить статусы сервисов
docker compose ps -a
# зайти в какой-то контейнер
docker compose exec -ti <сервис> <shell-команда>
docker compose exec -ti db psql -U test -d test # пример