Пошаговое руководство по развертыванию приложений Python Flask на Heroku

Введение

Мы построили нашу модель. Мы обучили нашу модель на наборе данных, используя различные алгоритмы машинного обучения. Мы рассчитали точность нашей модели на тестовых данных. И сейчас? Как люди могут использовать нашу модель? Правильно, следующим шагом будет развертывание нашей модели. Существуют разные варианты развертывания нашей модели машинного обучения. Один из таких вариантов — использовать Flask и Heroku. Heroku — это облачная платформа как услуга (PaaS). Он поддерживает несколько языков программирования. Использование Heroku заключается в развертывании, управлении и масштабировании современных приложений.

Обзор

В этой статье мы хотели бы показать

  • как установить Flask на нашу машину
  • как создать наше первое приложение Flask
  • как развернуть наше приложение на Heroku

Шаг 1: Создайте папку проекта

Сначала мы создадим папку нашего проекта. Мы изменим наш текущий рабочий каталог на папку «Рабочий стол». Мы запустим следующую команду:

После этого мы создадим новый каталог с помощью следующей команды:

Затем мы изменим наш текущий рабочий каталог на папку, которую мы создали:

Шаг 2: Создайте виртуальную среду Python

Мы не будем устанавливать Flask в домашний каталог Python для широкого использования в системе. Мы рекомендуем создать и установить виртуальную среду для установки Flask в Python. Это папка с локальной копией интерпретатора Python с установленными пакетами. Преимущество в том, что установленные пакеты для проектов не влияют друг на друга.

Предлагаемый способ создания виртуальных сред в Python 3 теперь заключается в использовании стандартного модуля venv. Не требуется устанавливать venv с pip. Если вместо этого вы используете virtualenv, вам нужно будет установить его с помощью pip. Мы перейдем в корневую папку проекта и воспользуемся следующей командой:

Второй venv — это папка с именем venv. Мы будем хранить все пакеты в этой папке. После этого нам нужно будет активировать среду перед началом работы над проектом. Чтобы активировать среду, мы выполним следующую команду:

После этого мы изменим текущий рабочий каталог на созданную нами папку:

Мы увидим имя текущей активной среды в нашей командной строке.

Шаг 3: Установите Flask и Gunicorn

Как и другие пакеты Python, Flask очень легко установить с помощью утилиты pip. Утилита pip является частью стандартного дистрибутива Python. Подробнее о Flask можно прочитать здесь. Мы выполним следующую команду для установки Flask и Gunicorn:

Результат:

Шаг 4. Создайте простое приложение Python.

Мы создадим папку приложения с помощью следующей команды:

Мы изменим текущий рабочий каталог на папку, которую мы создали:

После этого мы создадим файл Python с помощью этой команды и введем следующий код:

Приложение Flask выглядит так:

  • Первая строка кода импортирует класс Flask.
  • Вторая строка кода создает свой экземпляр.
  • Символ @ перед app.route() говорит о том, что route() является функцией-декоратором.
  • Этот объект является объектом приложения WSGI. Мы сопоставим URL с функцией index(). Всякий раз, когда / он запускает сопоставленную функцию.

Примечание. Отступы (пробелы в начале строки кода) имеют решающее значение в Python.

Шаг 5: Создайте файл wsgi.py

Сначала мы вернемся в последний рабочий каталог с помощью следующей команды:

Затем мы создадим файл wsgi.py с помощью следующей команды:

wsgi.py выглядит так:

Шаг 6. Запустите приложение в вашей локальной системе.

Мы используем встроенный сервер разработки, отладчик и перезагрузку. Чтобы запустить файл в вашей локальной системе, мы вводим следующую команду:

Шаг 7: Создайте файл requirements.txt

Этот файл представляет собой простой текстовый файл со всеми модулями и пакетами Python, используемыми в проекте. Это упрощает установку необходимых модулей на любой компьютер. Это позволяет легко поделиться проектом с другими. Heroku нужен файл requirements.txt, чтобы определить, что это проект Python. Содержимое файла выглядит так:

С помощью следующей команды мы можем проверить, какие модули мы установили с помощью pip install:

Заказ нечувствителен к регистру. Он также показывает версию установленных модулей.

Файл requirements.txt должен находиться в корневой папке проекта. В противном случае приложение Heroku не развернется. Мы перейдем в корневую папку проекта и выполним следующую команду:

Шаг 8: Создайте Procfile

Файл procfile определяет команды, выполняемые приложением при запуске. Procfile является обязательным для приложений Heroku. Мы создадим Procfile в корневой папке проекта:

Мы добавим следующую строку:

  • Слово wsgi представляет собой имя файла Python, который запускает наше приложение.
  • Слово app представляет имя нашего приложения.

Шаг 9: Разверните наше приложение на Heroku

Мы войдем в Heroku с помощью следующей команды:

Нам нужно будет установить git и Heroku CLI. Если у вас не установлены Git и Heroku CLI, следуйте инструкциям по установке Git и Heroku CLI здесь:

Чтобы инициализировать новый репозиторий git в нашем каталоге, мы будем использовать команду git init в корневом каталоге нашего приложения:

После запуска git init git начнет отслеживать изменения в проекте.

Примечание. Если ваше приложение находится в подкаталоге вашего репозитория, оно не запускается при отправке в Heroku.

Чтобы добавить main.py, мы будем использовать команду git add, чтобы сохранить его в репозиторий:

Чтобы добавить все файлы, в которых есть изменения, мы будем использовать следующую команду:

Промежуточные файлы означают, что мы добавляем зафиксированные файлы. После постановки дальнейшие изменения невозможны.

Примечание. Промежуточные файлы следует добавлять только в том случае, если вы готовы их зафиксировать.

Важно включить файл .gitignore в каждый репозиторий git. Этот файл сообщает git, какие файлы игнорировать. Например, мы будем игнорировать следующие файлы:

  • Файлы байт-кода в Python (*.pyc)
  • Базы данных (*.db)
  • Секреты
  • Файлы метаданных IDE (.idea)
  • env или venv

Чтобы отслеживать код в локальном репозитории Git, мы будем использовать команду git commit для фиксации изменений. Мы добавим наше сообщение коммита с -m:

Приложение еще не существует ни на одном удаленном сервере. Мы развернем приложение, отправив его код на специальный связанный с ним удаленный сервер, размещенный на Heroku. Команда Heroku create CLI создаст новое пустое приложение на Heroku. Мы перейдем в корневой каталог нашего приложения. Мы будем использовать следующую команду:

Мы также можем добавить удаленный доступ в наш локальный репозиторий к одному из наших существующих приложений Heroku из командной строки:

Чтобы отправить код из нашего локального репозитория на удаленный Heroku, мы будем использовать команду git push:

Теперь открываем веб-браузер и набираем в адресной строке http://127.0.0.1:5000/:

Если нам не нужна виртуальная среда, мы можем деактивировать ее с помощью команды deactivate.

Если вам понравилась эта статья, пожалуйста, похлопайте. Если вы хотите читать подобные статьи от меня, подпишитесь на меня, чтобы получать электронные письма всякий раз, когда я публикую новую статью.

Использованная литература:

Дуайер, Г., Аггарвал, С. и Стоуффер, Дж. (2017) Flask: Создание веб-сервисов Python. 1-е изд. Издательство Пакет. Доступно по адресу: https://www.perlego.com/book/527263/flask-building-python-web-services-pdf (дата обращения: 30 августа 2022 г.).

Гринберг, М. (2014) Веб-разработка Flask. Разработка веб-приложений с помощью Python. О'Райли Медиа. Доступно по адресу: https://www.oreilly.com/library/view/flask-web-development/9781491991725/ (дата обращения: 25 сентября 2022 г.).

СТАНЬТЕ ПИСАТЕЛЕМ на MLearning.ai