Фласк против FASTAPI против Джанго ???

И Django, и Flask — отличные фреймворки, несомненно, но FASTAPi быстро развивается.

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

Когда требуется простой микросервис, предоставляющий пару конечных точек API, именно здесь сияет Flask. Лично я широко использовал flask для развертывания моделей машинного обучения.

Однако, когда дело доходит до микросервисов RESTful, и Flask, и Django не оправдали ожиданий, когда речь шла о производительности и скорости разработки. Здесь FAST API превосходит два предыдущих.

Почему FASTAPI лучше, чем FLASK??

Рассуждение довольно простое. Flask использует WSGI, тогда как FASTAPI использует ASGI. Для тех, кто не знает WSGI и ASGI, позвольте мне кратко объяснить это.

WSGI (расшифровывается как интерфейс шлюза веб-сервера), где вы можете определить свое приложение как вызываемый объект, который принимает два аргумента: первый аргумент среда описывает запрос и среду, в которой работает сервер. а второй аргумент — это синхронный вызов, который вы вызываете, чтобы запустить ответ для получения тела.

У него нет возможности официально работать с веб-сокетами. Однако Wsgi.websocket — это неофициальный обходной путь. WSGI также не может работать с HTTP/2. Мы также не можем использовать async или await с WSGI.

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

ASGI является преемником успешного WSGI. Цель ASGI состоит в том, чтобы и дальше оставаться стандартом совместимости между веб-серверами, фреймворками и приложениями, такими как WSGI, в асинхронном Python. в WSGI, который дает представление о конкретном соединении. Receive и Send, где вы, как приложение, должны получать и отправлять сообщения, являются асинхронными вызываемыми. Это позволяет использовать несколько входящих и исходящих событий для каждое приложение.

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

Короче говоря, WSGI является синхронным, тогда как ASGI является асинхронным.

Некоторые из преимуществ, которые предлагает FASTAPI:

FastAPI — это современная, быстрая (высокопроизводительная) веб-инфраструктура для создания API-интерфейсов с Python 3.6+ на основе стандартных подсказок типов Python.

Ключевые особенности:

  • Быстро: очень высокая производительность, сравнимая с NodeJS и Go (благодаря Starlette и Pydantic). Один из самых быстрых доступных фреймворков Python.
  • Быстрый код: увеличьте скорость разработки функций примерно на 200–300 %. *
  • Меньше ошибок. Сократите примерно на 40 % ошибок, вызванных человеческим фактором (разработчиком). *
  • Интуитивный: отличная поддержка редактора. Завершение везде. Меньше времени на отладку.
  • Простота. Разработана так, чтобы ее было легко использовать и осваивать. Меньше времени на чтение документов.
  • Короткий: сведите к минимуму дублирование кода. Несколько функций из каждого объявления параметра. Меньше ошибок.
  • Надежность: получите готовый к работе код. С автоматической интерактивной документацией.
  • На основе стандартов: основаны (и полностью совместимы) с открытыми стандартами для API: OpenAPI (ранее известный как Swagger) и JSON Schema.

Итак, давайте начнем и построим нашу модель машинного обучения….

Мы используем набор данных для проверки подлинности банкнот. Вы можете скачать его по ссылке.

Данные имеют 4 независимых функции (дисперсия, асимметрия, эксцесс и энтропия) и одну зависимую метку класса характеристик (подлинная банкнота или нет).

Используя стандартное разделение тестов поезда, мы разделяем набор данных на обучающий и тестовый наборы данных. Примечание. Я не выполняю EDA, поскольку целью этого блога является развертывание с использованием FASTAPI.

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

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

После этого нам нужно создать 2 файла. Один из них — requirements.txt, а другой — Procfile. Содержимое Procfile следующее

web: gunicorn -w 4 -k uvicorn.workers.UvicornWorker app:app

Это говорит о том, что это в основном веб-приложение. Gunicorn используется с 4 рабочими.

Вы можете использовать Gunicorn для управления Uvicorn и запуска нескольких параллельных процессов. Таким образом, вы получите максимум от параллелизма и параллелизма.

Для требований, txt нам нужно установить fastapi и gunicorn.

pip install fastapi gunicorn

Теперь давайте подробно рассмотрим файл app.py и подробно рассмотрим каждый шаг.

Шаг 1 Импорт библиотеки

import uvicorn
from fastapi
import FastAPI
from BankNotes import BankNote
import numpy as np
import pickle
import pandas as pd

Убедившись, что все пакеты установлены, мы можем перейти к следующему шагу.

Шаг 2. Создание объекта FASTAPI

app = FastAPI()
pickle_in = open("classifier.pkl","rb")
classifier=pickle.load(pickle_in)

Шаг 3. Определение маршрутов через созданный объект

Шаг 4. Определение номера порта для приложения

Шаг 5. Команда для запуска приложения

uvicorn app:app --reload

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

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

Шаг 6 После входа в свою учетную запись heroku вы сможете создать новое приложение.

Шаг 7. Далее вы должны создать новое приложение для своего проекта. Выберите уникальное имя

Затем загрузите все файлы вашего проекта на Github и подключитесь к своему репозиторию, а затем нажмите «Развернуть основную ветку». После того, как все зависимости будут установлены, ваше приложение будет запущено по нужному URL-адресу, и вы добавите к нему /docs, чтобы увидеть пользовательский интерфейс.

ПРИМЕЧАНИЕ Убедитесь, что в вашем репозитории есть файл requirements.txt и Procfile.

Мы можем четко проанализировать, какие параметры будет принимать наша модель ML, а также увидеть их типы данных.

с пользовательским интерфейсом мы можем легко увидеть ответ на наш запрос.

Чтобы увидеть живую демонстрацию, перейдите по этой ссылке.

Весь код, используемый в блоге, вы можете найти в моем репозитории.

Надеюсь, что после прочтения этого блога вы сможете приступить к развертыванию своей модели машинного обучения с помощью FASTAPI. Счастливого обучения :)