Приложение для практического руководства по разработке бэкенд-сервисов на Python (на основе вступительного испытания в Школу бэкенд-разработки Яндекса в 2019 году).
Что внутри?
Приложение упаковано в Docker-контейнер и разворачивается с помощью Ansible.
Внутри Docker-контейнера доступны две команды: analyzer-db
— утилита
для управления состоянием базы данных и analyzer-api
— утилита для
запуска REST API сервиса.
Как использовать?
Как применить миграции:
docker run -it \
-e ANALYZER_PG_URL=postgresql://user:hackme@localhost/analyzer \
alvassin/backendschool2019 analyzer-db upgrade head
Как запустить REST API сервис локально на порту 8081:
docker run -it -p 8081:8081 \
-e ANALYZER_PG_URL=postgresql://user:hackme@localhost/analyzer \
alvassin/backendschool2019
Все доступные опции запуска любой команды можно получить с помощью
аргумента --help
:
docker run alvassin/backendschool2019 analyzer-db --help
docker run alvassin/backendschool2019 analyzer-api --help
Опции для запуска можно указывать как аргументами командной строки, так и
переменными окружения с префиксом ANALYZER
(например: вместо аргумента
--pg-url
можно воспользоваться ANALYZER_PG_URL
).
Как развернуть?
Чтобы развернуть и запустить сервис на серверах, добавьте список серверов в файл deploy/hosts.ini (с установленной Ubuntu) и выполните команды:
cd deploy
ansible-playbook -i hosts.ini --user=root deploy.yml
Разработка
Быстрые команды
make
Отобразить список доступных командmake devenv
Создать и настроить виртуальное окружение для разработкиmake postgres
Поднять Docker-контейнер с PostgreSQLmake lint
Проверить синтаксис и стиль кода с помощью pylamamake clean
Удалить файлы, созданные модулем distutilsmake test
Запустить тестыmake sdist
Создать source distributionmake docker
Собрать Docker-образmake upload
Загрузить Docker-образ на hub.docker.com
Как подготовить окружение для разработки?
make devenv
make postgres
source env/bin/activate
analyzer-db upgrade head
analyzer-api
После запуска команд приложение начнет слушать запросы на 0.0.0.0:8081.
Для отладки в PyCharm необходимо запустить env/bin/analyzer-api
.
Как запустить тесты локально?
make devenv
make postgres
source env/bin/activate
pytest
Для отладки в PyCharm необходимо запустить env/bin/pytest
.
Как запустить нагрузочное тестирование?
Для запуска locust необходимо выполнить следующие команды:
make devenv
source env/bin/activate
locust
После этого станет доступен веб-интерфейс по адресу http://localhost:8089
Ссылки
- Трансляция с ответами на наиболее частые вопросы по тестовым заданиям и Школе.