Проект для Федерации адаптивного хоккея
1.1. Инструкции и ритуалы на проекте
1.3. Референс
1.4. Дизайн
1.5. Диаграмма обработки видео игроков
1.6. Спецификация требований от аналитиков
2.1. Структура проекта
2.2. Используемых технологий в проекте
3.1. Правила работы с git
3.2. Настройка poetry
3.3. Настройка pre-commit
3.4. Настройка переменных окружения
4.2. Запуск в Docker
| Имя | Описание |
| ------------- | ------------- |
| infrastructure | Docker-compose файлы для запуска проекта с помощью Docker |
| adaptive_hockey_federation | основной код приложения |
Примечание: для работы над проектом необходим Python не ниже версии 3.11.
Также необходимо установить Poetry (не ниже 1.5.0) и pre-commit.
Две основные ветки: master
и dev
Ветка dev
— “предрелизная”. Т.е. здесь должен быть рабочий и выверенный код
Создавая новую ветку, наследуйтесь от ветки dev
В master
находится только production-ready код (CI/CD)
Правила именования веток
весь новый функционал — feature/название-функционала
исправление ошибок — bugfix/название-багфикса
Пушим свою ветку в репозиторий и открываем Pull Request
ВАЖНО! К таске из Projects привязываем свой Pull Request
Poetry - это инструмент для управления зависимостями и виртуальными окружениями, также может использоваться для сборки пакетов. В этом проекте Poetry необходим для дальнейшей разработки приложения, его установка обязательна.
В этом разделе представлены наиболее часто используемые команды.
Подробнее: https://python-poetry.org/docs/cli/
poetry shell
poetry add <package_name>
poetry update
Перед запуском проекта необходимо создать копию файла
.env.example
, назвав его .env
и установить значение токена бота, базы данных почты и тд.
git clone https://github.com/Studio-Yandex-Practicum/adaptive_hockey_federation.git
cd adaptive_hockey_federation
Для удобного пользования проектом на локальном компьютере, реализованы короткие make команды.
После клонирования проекта перейдите в корневую директорию проекта при помощи консоли.
cd adaptive_hockey_federation
Запустить локально контейнер postgres/redis (если не запущен)
make start-db
Для быстрого развёртывания проекта воспользуйтесь командой:
make init-app
Скрипт сам соберёт статику, применит к базе готовые миграции и инициализирует создание супер-юзера, вам только понадобится ввести его данные.
Для запуска локального сервера используйте команду:
make run
Если в модели были внесены изменения воспользуйтесь командой:
make makemigrations
Будут созданы свежие миграции и сразу применены к базе данных.
Для минимальной работы celery (из директории с manage.py)
poetry run celery -A core worker -Q process_queue,slice_player_video_queue -l INFO -P solo
Более подробно со всеми возможностями можно ознакомится при помощи команды help:
make help
Собрать образ и запустить приложение из Dockerfile
docker build -t adaptive-hockey-federation .
docker run --name adaptive-hockey-federation -it -p 8000:8000 adaptive-hockey-federation
Собрать приложения в контейнеры при помощи Docker-compose:
docker-compose up -d --build
Django-проект и Nginx запустятся в контейнерах, при помощи инструкций в entrypoint.sh через 10 секунд добавится статика
Для этого прилагается видео инструкция, которую можно посмотреть тут.
Все тесты запускаются командой:
pytest
Или
make pytest
Выборочно тесты запускаются с указанием выбранного файла:
pytest test_start.py
Для написания тестов используется pytest.
Фикстуры хранятся в файле tests/conftest.py
Основные тесты хранятся в директории tests.
В зависимости от функционала тестов можно добавлять файлы тестов.
Файлы тестов должны начинаться с "test_".
Разработчик самостоятельно определяет функционал, который будет покрыт
данными. Но, как правило, рекомендуется тестировать все написанные
самостоятельно основные вьюхи, функции отправки и получения сообщений,
функции перенаправления на сторонние или внутренние ресурсы.
Раздел будет обновляться.
http://127.0.0.1:8000/api/docs/
Для корректного выполнения запросов из Swagger необходимов нажать кнопку Authorize
и ввести API ключ.
При выполнении прямых запросов к эндпоинтам, необходимо добавить в заголовок запроса
ключ X-API-KEY
со значением API ключа.
API ключ вынесен в .env.example
файл. Для удобства работы в локальной среде
установлено значение по умолчанию.
Раздел будет обновляться.
настройка интеграции с django.
core.config.base_settings.py - настройка брокера и бекэнда используемого celery
конфиги для воркеров, очередей, тасков, приоритетов и т.д.
core.celery.py
Воркер запускается в составе команды make run
с использованием команды:
poetry run celery -A core worker -P solo -l info
core
- имя экзепляра Сelery().
Флаг -P
solo определяет, что каждый таск из очереди будет передаваться по одному. Так же есть geevent, group см. документацию.
опциональные флаги:
-l INFO - если требуются логи
-Q <имена очередей через запятую без пробелов> - если нужно указать воркеру какие очереди он обслуживает. Поумолчанию "default"
-n <имя воркера@%h> - передается имя воркера, если запускается больше 1 воркера. поумолчанию "celery"
см. документацию https://docs.celeryq.dev/en/stable/userguide/workers.html
В составе команды make run
также запускается пользовательский интерфейс по отслеживанию за работой воркеров.
Для запуска пользовательского интерфейса используется команда:
poetry run celery -A core flower
По умолчанию запускается на
http://127.0.0.1:5555
Для запуска имитации сервера DS:
make ds-mock
Сервер запустится по адресу 127.0.0.1:8010
Задержку "распознавания" можно изменить в константе DELAY в файле service/tasks.py.