Code Monkey home page Code Monkey logo

ultrastudent / backendschool2019 Goto Github PK

View Code? Open in Web Editor NEW

This project forked from alvassin/backendschool2019

0.0 0.0 0.0 121 KB

Приложение для практического руководства по разработке бекенд-сервисов на Python (на основе вступительного испытания в Школу бэкенд‑разработки Яндекса)

Home Page: https://yandex.ru/promo/academy/backend-school/

License: MIT License

Python 95.39% Makefile 1.63% Mako 0.47% Dockerfile 1.79% Jinja 0.71%

backendschool2019's Introduction

Приложение для практического руководства по разработке бэкенд-сервисов на Python (на основе вступительного испытания в Школу бэкенд-разработки Яндекса в 2019 году).

image

Что внутри?

Приложение упаковано в 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-контейнер с PostgreSQL
  • make lint Проверить синтаксис и стиль кода с помощью pylama
  • make clean Удалить файлы, созданные модулем distutils
  • make test Запустить тесты
  • make sdist Создать source distribution
  • make 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

Ссылки

backendschool2019's People

Contributors

alvassin avatar eoan-ermine avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.