🚀 Попробуйте Zilliz Cloud, полностью управляемый Milvus, бесплатно — ощутите 10-кратное увеличение производительности! Попробовать сейчас>

milvus-logo
LFAI
  • Home
  • Blog
  • Почему стоит выбрать FastAPI вместо Flask?

Почему стоит выбрать FastAPI вместо Flask?

  • Engineering
December 03, 2021
Yunmei

Чтобы помочь вам быстро начать работу с Milvus, векторной базой данных с открытым исходным кодом, мы выпустили еще один связанный с ней проект с открытым исходным кодом, Milvus Bootcamp на GitHub. Milvus Bootcamp не только предоставляет скрипты и данные для эталонных тестов, но и включает проекты, использующие Milvus для создания некоторых MVP (минимально жизнеспособных продуктов), таких как система обратного поиска изображений, система анализа видео, QA-чатбот или рекомендательная система. Вы сможете узнать, как применять векторный поиск по сходству в мире, полном неструктурированных данных, и получить практический опыт в Milvus Bootcamp.

2.png 2.png

Мы предоставляем как front-end, так и back-end услуги для проектов в Milvus Bootcamp. Однако недавно мы приняли решение сменить используемый веб-фреймворк с Flask на FastAPI.

Цель этой статьи - объяснить мотивы, побудившие нас сменить веб-фреймворк для Milvus Bootcamp, и пояснить, почему мы выбрали FastAPI вместо Flask.

Веб-фреймворки для Python

Под веб-фреймворком понимается набор пакетов или модулей. Это набор программных архитектур для веб-разработки, который позволяет писать веб-приложения или сервисы и избавляет вас от необходимости разбираться с низкоуровневыми деталями, такими как протоколы, сокеты или управление процессами/потоками. Использование веб-фреймворка позволяет значительно снизить объем работы по разработке веб-приложений, так как вы можете просто "подключить" свой код к фреймворку, без необходимости уделять дополнительное внимание кэшированию данных, доступу к базам данных и проверке безопасности данных. Подробнее о том, что такое веб-фреймворк для Python, читайте в разделе Веб-фреймворки.

Существуют различные типы веб-фреймворков для Python. К основным относятся Django, Flask, Tornado и FastAPI.

Flask

3.png 3.png

Flask - это легкий микрофреймворк, разработанный для Python, с простым и удобным ядром, которое позволяет разрабатывать собственные веб-приложения. Кроме того, ядро Flask является расширяемым. Таким образом, Flask поддерживает расширение различных функций по требованию, чтобы удовлетворить ваши индивидуальные потребности при разработке веб-приложений. Иными словами, используя библиотеку различных плагинов Flask, вы можете создавать мощные веб-сайты.

Flask обладает следующими характеристиками:

  1. Flask - это микрофреймворк, который не зависит от других специфических инструментов или компонентов сторонних библиотек для обеспечения общих функциональных возможностей. Flask не имеет слоя абстракции базы данных и не требует проверки форм. Тем не менее, Flask обладает высокой расширяемостью и поддерживает добавление функциональности приложения способом, аналогичным реализации в самом Flask. К числу таких расширений относятся объектно-реляционные мапперы, проверка форм, обработка загрузок, технологии открытой аутентификации и некоторые общие инструменты, разработанные для веб-фреймворков.
  2. Flask - это фреймворк для веб-приложений, основанный на WSGI (Web Server Gateway Interface). WSGI - это простой интерфейс, соединяющий веб-сервер с веб-приложением или фреймворком, разработанным на языке Python.
  3. Flask включает в себя две библиотеки основных функций, Werkzeug и Jinja2. Werkzeug - это инструментарий WSGI, реализующий объекты запросов, ответов и практические функции, что позволяет строить на его основе веб-фреймворки. Jinja2 - популярный полнофункциональный шаблонизатор для Python. Он имеет полную поддержку Unicode, а также необязательную, но широко распространенную интегрированную среду исполнения "песочница".

FastAPI

4.png 4.png

FastAPI - это современный фреймворк для веб-приложений на Python, который по уровню высокой производительности не уступает Go и NodeJS. В основе FastAPI лежат Starlette и Pydantic. Starlette - это легкий фреймворк ASGI(Asynchronous Server Gateway Interface) для создания высокопроизводительных сервисов Asyncio. Pydantic - это библиотека, определяющая проверку, сериализацию и документирование данных на основе подсказок типов Python.

FastAPI обладает следующими характеристиками:

  1. FastAPI - это фреймворк для веб-приложений, основанный на ASGI, асинхронном шлюзовом протокольном интерфейсе, соединяющем службы сетевых протоколов и Python-приложения. FastAPI может работать с различными распространенными типами протоколов, включая HTTP, HTTP2 и WebSocket.
  2. FastAPI основан на Pydantic, который обеспечивает функцию проверки типа данных интерфейса. Вам не нужно дополнительно проверять параметры интерфейса или писать дополнительный код для проверки того, пусты ли параметры или корректен ли тип данных. Использование FastAPI позволяет эффективно избежать человеческих ошибок в коде и повысить эффективность разработки.
  3. FastAPI поддерживает документы в двух форматах - OpenAPI (ранее Swagger) и Redoc. Поэтому вам, как пользователю, не нужно тратить время на написание дополнительных интерфейсных документов. Документ OpenAPI, предоставляемый FastAPI, показан на скриншоте ниже.

5.png 5.png

Flask против FastAPI

В таблице ниже показаны различия между Flask и FastAPI по нескольким аспектам.

FastAPIFlask
Интерфейсный шлюзASGIWSGI
Асинхронный фреймворк
ПроизводительностьБыстрееМедленнее
Интерактивный документOpenAPI, RedocНет
Проверка данных
Затраты на разработкуНижеВыше
Простота использованияНижеВыше
ГибкостьМенее гибкийБолее гибкий
СообществоМеньшеБолее активное

Почему FastAPI?

Прежде чем решить, какой фреймворк для веб-приложений на Python выбрать для проектов в Milvus Bootcamp, мы изучили несколько основных фреймворков, включая Django, Flask, FastAPI, Tornado и другие. Поскольку проекты в Milvus Bootcamp служат для вас эталонами, наш приоритет - выбрать внешний фреймворк, обладающий максимальной легкостью и функциональностью. В соответствии с этим правилом мы сузили наш выбор до Flask и FastAPI.

Сравнение этих двух веб-фреймворков вы можете увидеть в предыдущем разделе. Ниже мы подробно объясним, почему для проектов в Milvus Bootcamp мы выбрали FastAPI, а не Flask. Причин несколько:

1. Производительность

Большинство проектов в Milvus Bootcamp построены на системах обратного поиска изображений, QA-чатботах, текстовых поисковых системах, которые предъявляют высокие требования к обработке данных в реальном времени. Соответственно, нам нужен фреймворк с выдающейся производительностью, что как раз и является изюминкой FastAPI. Поэтому, с точки зрения производительности системы, мы решили выбрать FastAPI.

2. Эффективность

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

3. Асинхронный фреймворк

FastAPI по своей сути является асинхронным фреймворком. Изначально мы выпустили четыре демо-версии: обратный поиск изображений, анализ видео, QA-чатбот и поиск молекулярного сходства. В этих демках вы можете загружать наборы данных и сразу же получать запрос "запрос получен". А когда данные будут загружены в демонстрационную систему, вы получите еще одно сообщение "загрузка данных успешна". Это асинхронный процесс, который требует наличия фреймворка, поддерживающего эту функцию. FastAPI сам по себе является асинхронным фреймворком. Чтобы объединить все ресурсы Milvus, мы решили использовать единый набор инструментов и программного обеспечения для разработки как Milvus Bootcamp, так и демонстрационных версий Milvus. В результате мы сменили фреймворк с Flask на FastAPI.

4. Автоматические интерактивные документы

В традиционном варианте, когда вы заканчиваете писать код для серверной части, вам нужно написать дополнительный документ для создания интерфейса, а затем использовать инструменты вроде Postman для тестирования и отладки API. Что же делать, если вы хотите быстро приступить к разработке серверной части проектов в Milvus Bootcamp без написания дополнительного кода для создания интерфейса? FastAPI - это решение. Предоставляя документ OpenAPI, FastAPI может избавить вас от необходимости тестировать или отлаживать API и сотрудничать с командами разработчиков внешнего интерфейса для создания пользовательского интерфейса. С помощью FastAPI вы сможете быстро опробовать собранное приложение с автоматическим, но интуитивно понятным интерфейсом без дополнительных усилий по кодированию.

5. Удобство использования

FastAPI проще в использовании и разработке, что позволяет уделять больше внимания конкретной реализации проекта. Не тратя много времени на разработку веб-фреймворков, вы можете больше сосредоточиться на понимании проектов в Milvus Bootcamp.

Обзор

У Flask и FlastAPI есть свои плюсы и минусы. Flask - это развивающийся фреймворк для веб-приложений, а FlastAPI, по своей сути, построен на базе зрелых наборов инструментов и библиотек, Starlette и Pydantic. FastAPI - это асинхронный фреймворк с высокой производительностью. Его гибкость, расширяемость, поддержка автоматической проверки типов данных, а также множество других мощных возможностей побудили нас принять FastAPI в качестве фреймворка для проектов Milvus Bootcamp.

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

Об авторе

Юньмэй Ли, инженер по данным Zilliz, окончила Хуачжунский университет науки и технологий по специальности "информатика". С момента прихода в Zilliz она работает над поиском решений для проекта Milvus с открытым исходным кодом и помогает пользователям применять Milvus в реальных сценариях. Ее основное внимание сосредоточено на НЛП и рекомендательных системах, и она хотела бы еще больше углубиться в эти две области. Она любит проводить время в одиночестве и читать.

Ищете больше ресурсов?

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started

Like the article? Spread the word

Продолжить чтение