https://github.com/alvassin/backendschool2019
Приложение для практического руководства по разработке бекенд-сервисов на Python (на основе вступительного испытания в Школу бэкенд‑разработки Яндекса)
https://github.com/alvassin/backendschool2019
aiohttp alembic asyncio asyncpg python python3 sqlalchemy yandex
Last synced: 6 months ago
JSON representation
Приложение для практического руководства по разработке бекенд-сервисов на Python (на основе вступительного испытания в Школу бэкенд‑разработки Яндекса)
- Host: GitHub
- URL: https://github.com/alvassin/backendschool2019
- Owner: alvassin
- License: mit
- Created: 2020-04-29T07:14:04.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2022-08-02T21:33:12.000Z (over 3 years ago)
- Last Synced: 2025-05-20T07:04:44.918Z (8 months ago)
- Topics: aiohttp, alembic, asyncio, asyncpg, python, python3, sqlalchemy, yandex
- Language: Python
- Homepage: https://yandex.ru/promo/academy/backend-school/
- Size: 118 KB
- Stars: 268
- Watchers: 6
- Forks: 59
- Open Issues: 0
-
Metadata Files:
- Readme: README.rst
- License: LICENSE
Awesome Lists containing this project
README
.. role:: shell(code)
:language: shell
Приложение для `практического руководства`_ по разработке бэкенд-сервисов на Python (на основе `вступительного испытания`_ в `Школу бэкенд-разработки Яндекса`_ в 2019 году).
.. _практического руководства: https://habr.com/ru/company/yandex/blog/499534/
.. _вступительного испытания: https://disk.yandex.ru/i/dA9umaGbQdMNLw
.. _Школу бэкенд-разработки Яндекса: https://yandex.ru/promo/academy/backend-school/
.. image:: https://github.com/alvassin/backendschool2019/workflows/CI/badge.svg?branch=master&event=push
:target: https://github.com/alvassin/backendschool2019/actions?query=workflow%3ACI
Что внутри?
===========
Приложение упаковано в Docker-контейнер и разворачивается с помощью Ansible.
Внутри Docker-контейнера доступны две команды: :shell:`analyzer-db` — утилита
для управления состоянием базы данных и :shell:`analyzer-api` — утилита для
запуска REST API сервиса.
Как использовать?
=================
Как применить миграции:
.. code-block:: shell
docker run -it \
-e ANALYZER_PG_URL=postgresql://user:hackme@localhost/analyzer \
alvassin/backendschool2019 analyzer-db upgrade head
Как запустить REST API сервис локально на порту 8081:
.. code-block:: shell
docker run -it -p 8081:8081 \
-e ANALYZER_PG_URL=postgresql://user:hackme@localhost/analyzer \
alvassin/backendschool2019
Все доступные опции запуска любой команды можно получить с помощью
аргумента :shell:`--help`:
.. code-block:: shell
docker run alvassin/backendschool2019 analyzer-db --help
docker run alvassin/backendschool2019 analyzer-api --help
Опции для запуска можно указывать как аргументами командной строки, так и
переменными окружения с префиксом :shell:`ANALYZER` (например: вместо аргумента
:shell:`--pg-url` можно воспользоваться :shell:`ANALYZER_PG_URL`).
Как развернуть?
---------------
Чтобы развернуть и запустить сервис на серверах, добавьте список серверов в файл
deploy/hosts.ini (с установленной Ubuntu) и выполните команды:
.. code-block:: shell
cd deploy
ansible-playbook -i hosts.ini --user=root deploy.yml
Разработка
==========
Быстрые команды
---------------
* :shell:`make` Отобразить список доступных команд
* :shell:`make devenv` Создать и настроить виртуальное окружение для разработки
* :shell:`make postgres` Поднять Docker-контейнер с PostgreSQL
* :shell:`make lint` Проверить синтаксис и стиль кода с помощью `pylama`_
* :shell:`make clean` Удалить файлы, созданные модулем `distutils`_
* :shell:`make test` Запустить тесты
* :shell:`make sdist` Создать `source distribution`_
* :shell:`make docker` Собрать Docker-образ
* :shell:`make upload` Загрузить Docker-образ на hub.docker.com
.. _pylama: https://github.com/klen/pylama
.. _distutils: https://docs.python.org/3/library/distutils.html
.. _source distribution: https://packaging.python.org/glossary/
Как подготовить окружение для разработки?
-----------------------------------------
.. code-block:: shell
make devenv
make postgres
source env/bin/activate
analyzer-db upgrade head
analyzer-api
После запуска команд приложение начнет слушать запросы на 0.0.0.0:8081.
Для отладки в PyCharm необходимо запустить :shell:`env/bin/analyzer-api`.
Как запустить тесты локально?
-----------------------------
.. code-block:: shell
make devenv
make postgres
source env/bin/activate
pytest
Для отладки в PyCharm необходимо запустить :shell:`env/bin/pytest`.
Как запустить нагрузочное тестирование?
---------------------------------------
Для запуска `locust`_ необходимо выполнить следующие команды:
.. code-block:: shell
make devenv
source env/bin/activate
locust
После этого станет доступен веб-интерфейс по адресу http://localhost:8089
.. _locust: https://locust.io
Ссылки
======
* `Трансляция с ответами`_ на наиболее частые вопросы по тестовым заданиям и Школе.
.. _Трансляция с ответами: https://www.youtube.com/watch?v=Bf0liGAahao