All Projects → alvassin → Backendschool2019

alvassin / Backendschool2019

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

Programming Languages

python
139335 projects - #7 most used programming language
python3
1442 projects

Projects that are alternatives of or similar to Backendschool2019

dvhb-hybrid
A package to mix django and asyncio in one application
Stars: ✭ 45 (-65.12%)
Mutual labels:  sqlalchemy, aiohttp, asyncio
Python Dependency Injector
Dependency injection framework for Python
Stars: ✭ 1,203 (+832.56%)
Mutual labels:  asyncio, aiohttp
Pyfailsafe
Simple failure handling. Failsafe implementation in Python
Stars: ✭ 70 (-45.74%)
Mutual labels:  asyncio, aiohttp
Rororo
Implement aiohttp.web OpenAPI 3 server applications with schema first approach.
Stars: ✭ 95 (-26.36%)
Mutual labels:  asyncio, aiohttp
Rocketgram
Modern and powerful asynchronous telegram bot framework.
Stars: ✭ 37 (-71.32%)
Mutual labels:  asyncio, aiohttp
Web Applications With Fastapi Course
Demo code and other handouts for students of our FastAPI Web Apps course.
Stars: ✭ 56 (-56.59%)
Mutual labels:  asyncio, sqlalchemy
Raven Aiohttp
An aiohttp transport for raven-python
Stars: ✭ 92 (-28.68%)
Mutual labels:  asyncio, aiohttp
Aiomixcloud
Mixcloud API wrapper for Python and Async IO
Stars: ✭ 23 (-82.17%)
Mutual labels:  asyncio, aiohttp
Aioauth
Asynchronous OAuth 2.0 framework and provider for Python 3
Stars: ✭ 102 (-20.93%)
Mutual labels:  asyncio, aiohttp
Sockjs
SockJS Server
Stars: ✭ 105 (-18.6%)
Mutual labels:  asyncio, aiohttp
Aiohttp Sse
Server-sent events support for aiohttp
Stars: ✭ 125 (-3.1%)
Mutual labels:  asyncio, aiohttp
Heroku Aiohttp Web
A project starter template for deploying an aiohttp app to Heroku
Stars: ✭ 14 (-89.15%)
Mutual labels:  asyncio, aiohttp
V3n0m Scanner
Popular Pentesting scanner in Python3.6 for SQLi/XSS/LFI/RFI and other Vulns
Stars: ✭ 847 (+556.59%)
Mutual labels:  asyncio, aiohttp
Aiopg
aiopg is a library for accessing a PostgreSQL database from the asyncio
Stars: ✭ 1,097 (+750.39%)
Mutual labels:  asyncio, sqlalchemy
Aioslacker
slacker wrapper for asyncio
Stars: ✭ 23 (-82.17%)
Mutual labels:  asyncio, aiohttp
Aiomysql
aiomysql is a library for accessing a MySQL database from the asyncio
Stars: ✭ 1,252 (+870.54%)
Mutual labels:  asyncio, sqlalchemy
Tgfilestream
A Telegram bot that can stream Telegram files to users over HTTP.
Stars: ✭ 113 (-12.4%)
Mutual labels:  asyncio, aiohttp
Aiohttp Demos
Demos for aiohttp project
Stars: ✭ 517 (+300.78%)
Mutual labels:  asyncio, aiohttp
Aiobotocore
asyncio support for botocore library using aiohttp
Stars: ✭ 630 (+388.37%)
Mutual labels:  asyncio, aiohttp
Ruia
Async Python 3.6+ web scraping micro-framework based on asyncio
Stars: ✭ 1,366 (+958.91%)
Mutual labels:  asyncio, aiohttp

.. 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-контейнера доступны две команды: 🐚analyzer-db — утилита для управления состоянием базы данных и 🐚analyzer-api — утилита для запуска REST API сервиса.

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

Как применить миграции:

.. code-block:: shell

docker run -it \
    -e ANALYZER_PG_URL=postgresql://user:[email protected]/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:[email protected]/analyzer \
    alvassin/backendschool2019

Все доступные опции запуска любой команды можно получить с помощью аргумента 🐚--help:

.. code-block:: shell

docker run alvassin/backendschool2019 analyzer-db --help
docker run alvassin/backendschool2019 analyzer-api --help

Опции для запуска можно указывать как аргументами командной строки, так и переменными окружения с префиксом 🐚ANALYZER (например: вместо аргумента 🐚--pg-url можно воспользоваться 🐚ANALYZER_PG_URL).

Как развернуть?

Чтобы развернуть и запустить сервис на серверах, добавьте список серверов в файл deploy/hosts.ini (с установленной Ubuntu) и выполните команды:

.. code-block:: shell

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

.. _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 необходимо запустить 🐚env/bin/analyzer-api.

Как запустить тесты локально?

.. code-block:: shell

make devenv
make postgres
source env/bin/activate
pytest

Для отладки в PyCharm необходимо запустить 🐚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

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].