Mort4lis / analyzer-api

Решение вступительного задания в школу бэкенд-разработки Яндекса

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Analyzer REST API

ci-workflow coverage python-versions Code style: black code-size code-lines image-size

Описание

Решение вступительного задания в школу бэкенд-разработки Яндекса (ссылка на задание). Данный проект реализовался в целях обучения: поработать с aiohttp, pytest, docker, github-actions.

Как использовать?

Перед тем как запустить приложение необходимо поднять postgres в docker-контейнере, либо вручную.

$ docker run --rm --detach --name=analyzer-postgres \
		--env POSTGRES_USER=analyzer_user \
		--env POSTGRES_PASSWORD=analyzer_password \
		--env POSTGRES_DB=analyzer \
		--publish 5432:5432 postgres:12.1

Используя Docker

  1. Загружаем docker-образ
$ docker pull mortalis/analyzer-api:latest
  1. Применяем миграции
$ docker run --network=host mortalis/analyzer-api:latest analyzer-db upgrade head
  1. Запускаем приложение
$ docker run --network=host --detach mortalis/analyzer-api:latest

Склонировав проект

  1. Клонируем проект с репозитория
$ git clone https://github.com/Mort4lis/analyzer-api.git
$ cd enrollment_2019/
  1. (Необязательно) Можно создать виртуальное окружение, для того чтобы изолировать данный пакет
$ python -m venv venv
$ source venv/bin/activate
  1. Устанавливаем пакет, после установки которого у нас появятся две cli-команды analyzer-api и analyzer-db
$ pip install .
  1. Применяем миграции
$ make migrate
# или
$ analyzer-db upgrade head
  1. Запускаем приложение
$ analyzer-api

Swagger-документация

После запуска, приложение по-умолчанию будет доступно на 8081 порту. Для просмотра swagger-документации перейдите по http://127.0.0.1:8081/

Конфигурация приложения

Приложение можно конфигурировать cli-аргументами и переменными окружения среды (environment variables). Получить более подробную информацию о списке аргументов:

# пример с docker
$ docker run --network=host mortalis/analyzer-api:latest analyzer-api --help
# пример с cli
$ analyzer-api --help

Полный список переменных окружения для конфигурации:

  • ANALYZER_API_ADDRESS - IPv4/IPv6-адрес, который будет слушать сервис
  • ANALYZER_API_PORT - tcp-порт, который будет слушать сервис
  • ANALYZER_PG_URL - dsn для подключения к postgres
  • ANALYZER_PG_POOL_MIN_SIZE - минимальный размер пула соединений к postgres
  • ANALYZER_PG_POOL_MAX_SIZE - максимальный размер пула соединений к postgres
  • ANALYZER_LOG_LEVEL - уровень логирования (debug, info, warning, error, fatal)
  • ANALYZER_LOG_FORMAT- формат лога (stream, color, json, syslog)

Например, можно запустить приложение на порту 8081, указав другое dsn для подключение к postgres:

$ docker run --network=host --detach \
  --env ANALYZER_PG_URL=postgresql://another_user:another_password@localhost/another_db \
  mortalis/analyzer-api:latest

Запуск тестов

Для запуска тестов и просмотра процента покрытия кодовой базы необходимо склонировать проект, находиться в папке с проектом и установить пакет в "режиме разработки".

$ pip install '.[dev]'

Запуск тестов

$ make test
# или
pytest --cov=analyzer --cov-report=term-missing tests/

About

Решение вступительного задания в школу бэкенд-разработки Яндекса

License:MIT License


Languages

Language:Python 97.2%Language:Dockerfile 1.8%Language:Mako 0.5%Language:Makefile 0.5%