Skip to content

Candy Delivery Shop REST API (Python + Flask). The second task for admission to the SBR 2021 from Yandex.

Notifications You must be signed in to change notification settings

neevink/yandex-backend-school-task

Repository files navigation

REST API интернет-магазина по доставке конфет

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

Зависимости

Для запуска проекта вам потребуется Python 3.8+ и пакетный менеджер pip. Все зависимости и их версии находятся в файле requirements.txt в корне проекта.

Чтобы установить зависимости, введите в терминал:

pip3 install -r requirements.txt

Подготовка к запуску

Для корректной работы приложения на машине должна быть установлена быза данных PostgreSQL. Если у вас Ubuntu, тогда для её установки, введите в консоль:

sudo apt-get install postgresql-12

Для запуска бибилиотеки psycopg2 вам может понадобиться установить дополнительные пакеты libpq-dev и gcc:

sudo apt-get install libpq-dev gcc

После установки пакетов, нужно создать базу данных, которую будет использовать приложение. Чтобы подключиться к СУБД в роли админимтратора, введите:

sudo -u postgres psql

Теперь создайте базу данных:

CREATE DATABASE candy_shop;

Создайте нового пользователя и выдайте ему админ-права в созданной базе данных:

CREATE USER candy_admin WITH PASSWORD '1';
GRANT ALL PRIVILEGES ON DATABASE candy_shop TO candy_admin;

Деплой сервиса в продакшн

Настоятельно рекомендую использовать http-сервер Gunicorn, для его установки введите в консоль:

sudo apt-get install gunicorn

По умолчанию сервис запускается на http://0.0.0.0:8080. Для запуска сервера перейдите в корень проекта и запустите скрипт:

./run_server.bash

Можно сделать автозапуск сервиса, при старте машины. Для этого нужно воспользоваться утилитой Supervisor:

sudo apt install supervisor

Supervisor использует файлы конфигурации, которые должны храниться в директории в /etc/supervisor/conf.d. Пример такого файла с именем api.conf:

[program:api]
command=gunicorn -b 0.0.0.0:8080 -w 5 api:app
directory=/home/entrant/yandex-backend-school-task/src
user=entrant
autostart=true
autorestart=true
stopasgroup=true
killasgroup=true

Как только вы создали этот файл, стоит перезапустить службу супервизора для импорта нового файла конфигурации:

sudo supervisorctl reload

Тесты

Почти весь код покрыт unit-тестами, если у вас не установлена среда разработки, то для их запуска нужно перейти в корень проекта и запустить скрипт:

./run_tests.bash

Модульные тесты используют боевую базу данных, а не фейковую. Тесты чистят базу данных до запуска тестов, и после их выполнения. Будьте внимательны!

Полезности

Я написал примеры запросов для утилиты curl к сервису, они лежат в коре проекта в фале curl-requests.txt

About

Candy Delivery Shop REST API (Python + Flask). The second task for admission to the SBR 2021 from Yandex.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published