Проверка внешних зависимостей в django

Использование django-version-checks

В этом руководстве рассмотрим установку и использование простой библиотеки для проверки версий внешних зависимостей.

Бывает сложно гарантировать, что все среды, в которых работает ваш проект, используют одни и те же версии Python, PostgreSQL и остальные внешние зависимости. Часто среды разработки и CI имеют различные системы конфигурации, что затрудняет их синхронизацию. А координация между всеми членами вашей команды для обновления их локального окружения может быть затруднена, так как письма об обновлении или мгновенные сообщения забываются, если они находятся в отпуске, работают над другими проектами и т.д. А использование неверных версий внешних зависимостей может привести к трудноустранимым ошибкам, и в итоге придется затрачивать время на поиск, а так же на устранение последствий.

За годы работы на разных проектах я несколько раз решал эту проблему с помощью System check framework в Django. Фреймворк позволяет уведомлять о том, что на ранних стадиях запуска среда имеет некорректные версии. Сегодня я выпустил пакет, содержащий настраиваемые версии таких проверок, django-version-checks. Вы активируете проверки, указывая разрешенные версии в спецификаторах PEP 440, в том же формате, в котором используется pip.

Например, представьте, что вы используете передовые версии Python и MariaDB. Чтобы убедиться, что все среды используют эти версии, или совместимые выпуски для исправления ошибок, вы можете установить django-version-checks и добавить их в файл настроек:

VERSION_CHECKS = {
    "mysql": "~=10.5.4",
    "python": "~=3.8.1",
}

В любых средах, чьи зависимости не соответствуют этим спецификаторам, будет обнаружена ошибка проверки системы.

Например, если бы я оставил свою среду разработки на Python 3.6 и попытался запустить миграцию:

python manage.py migrate

SystemCheckError: System check identified some issues: ERRORS: ?: (dvc.E003) The current version of Python (3.6.1) does not match the specified range (~=3.8.1).

Произошло бы исключение SystemCheckError, которое не позволило бы осуществить миграцию данных.

Егор Егоров

Программирую на Python с 2017 года. Люблю создавать контент, который помогает людям понять сложные вещи. Не представляю жизнь без непрерывного цикла обучения, спорта и чувства юмора.

Ссылка на мой github есть в шапке. Залетай.

Оцените автора
Егоров Егор
Добавить комментарий