что такое fast api

Знакомство с FastAPI

Это неофициальный перевод документации FastAPI. Если у вас есть время и знания, можете помочь с официальным переводом здесь.

Введение

Весь использованный код можно копировать и использовать без изменений (этот код представляет собой проверенные python-файлы).

Для запуска любого из примеров нужно скопировать код в файл main.py и запустить uvicorn с помощью следующей команды:

Крайне рекомендуется писать или копировать код и запускать локально. Использование его в редакторе показывает основные преимущества FastAPI. Можно видеть, насколько мало кода нужно писать: все проверки типов, автозаполнения и так далее.

Установка FastAPI

Первый шаг — установка FastAPI.

При первом знакомстве лучше установить его вместе со всеми опциональными зависимостями и возможностями:

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

Можно также выполнить установку частями. Это может потребоваться при развертывании приложения:
pip install fastapi
Также нужно установить uvicorn, чтобы он работал как сервер:
pip install uvicorn
И так для каждой зависимости.

Первый запуск приложения

Простейший файл FastAPI может выглядеть вот так:

Скопируйте содержимое в файл main.py и запустите сервер:

В выводе есть такая строка:

Она показывает URL работы сервера на локальной машине.

Проверка работы

Перейдите в браузере по ссылке http://127.0.0.1:8000. Там отобразится ответ в формате JSON:

Автоматическая документация API

Теперь стоит перейти на http://127.0.0.1:8000/docs.

На этой странице находится интерактивная документация по API (предоставляемая Swagger UI):

Альтернативная документация API

Также можно попробовать http://127.0.0.1:8000/redoc.

Это альтернативный вариант автоматической документации (от ReDoc):

OpenAPI

FastAPI генерирует «схему» из API с помощью стандарта OpenAPI.

Схема

Схема (schema) — это определение или описание чего-либо. Не код, отвечающий за реализацию, а просто абстрактное описание.

API-схема

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

Схема данных

Понятие «схема» может также указывать на форму некоторых данных: например, JSON-содержимое. В этом случае тут будут указываться JSON-атрибуты, использованные типы данных и другое.

OpenAPI и JSON Schema

OpenAPI определяет схему API для созданного API. А она, в свою очередь, включает определения отправленных или полученных через API данных с помощью JSON — стандарта схем данных JSON.

Проверка openapi.json

Если интересно узнать, как работает чистая схема OpenAPI, то FastAPI автоматически генерирует JSON-схему с описаниями API.

Их можно увидеть прямо на сайте: http://127.0.0.1:8000/openapi.json. Там будет показан JSON в таком формате:

Для чего нужен OpenAPI

Схема OpenAPI — это то, что отвечает за работу двух включенных интерактивных систем документации.

И есть десятки альтернатив, все из которых основаны на OpenAPI. Их можно запросто добавлять в приложение, построенное с помощью FastAPI.

Его также можно использовать для автоматической генерации кода, чтобы у клиентов была возможность взаимодействовать через API. Например, для фронтенда, мобильных или IoT-приложений.

Из чего состоит наше приложение

Шаг №1: импорт FastAPI

FastAPI — это класс Python, который предоставляет всю функциональность для API.

Источник

Создавайте и размещайте приложения Fast Data Science с помощью FastAPI

Недавно я разместил ряд готовых приложений для обработки данных в виде веб-служб Restful с использованием веб-инфраструктуры FastAPI.

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

FastAPI был выпущен в 2018 году и становится де-факто выбором для создания высокопроизводительных приложений для обработки данных.

Эта статья объяснит, что такое FastAPI, почему он превосходит своих конкурентов, а также пошаговое руководство о том, как разместить приложение для обработки данных с использованием FastAPI.

1. Что такое FastAPI?

Как видно из названия, FastAPI является высокопроизводительной веб-инфраструктурой. Его производительность можно сравнить с NodeJS и Go, и он считается одним из самых быстрых доступных сред Python.

Netflix, Uber, Microsoft и многие другие корпорации используют библиотеку FastAPI.

FastAPI может помочь нам создать API с Python 3.6+.

Он основан на стандартных подсказках типа Python. FastAPI не только интуитивно понятен и прост в использовании в проектах, но и код FastAPI также покрывает 100% тестов, и, следовательно, это готовый к работе надежный код.

Пользуясь Flask уже довольно давно, я заметил, что FastAPI так же прост в использовании, как Flask. Фактически, FastAPI адаптировал свою простоту от Flask API. Впоследствии, в общем, я рекомендую изучить FastAPI для будущих проектов.

FastAPI построен на библиотеках Starlette и Pydantic.

Диаграмма показывает, что FastAPI использует Starlette для своих веб-частей и Pydantic для частей данных.

Давайте рассмотрим особенности FastAPI.

2. Основные функции FastAPI

FastAPI основан на открытых стандартах для OpenAPI и JSON Schema. В результате он может автоматически создавать SwaggerUI для нашего веб-API без какого-либо дополнительного кодирования, если мы используем соответствующие типы данных Pydantic. SwaggerUI является интерактивным по своей природе и позволяет нам тестировать API непосредственно из браузера. Автоматическая документация была вдохновлена ​​APISpec.

Я продемонстрирую, как мы можем построить документацию по автоматической модели данных с помощью схемы JSON, используя FastAPI, позже в этой статье.

FastAPI также позволяет нам проверять входные данные от внешних абонентов и генерирует автоматические ошибки для клиентов, когда он получает недействительные данные. Функция документирования была основана на DEST-среде Django.

Читайте также:  что делают после обеда

OpenAPI автоматически генерирует схему для приложения. FastAPI также поддерживает сериализацию данных и анализ входных данных, которые были вдохновлены Marshmallow и Webargs.

Крайне важно создать веб-API, который не блокирует своих абонентов во время выполнения операций. Библиотека asyncio в Python предлагает большое количество асинхронных возможностей.

Библиотека FastAPI поддерживает асинхронные операции ввода-вывода. Это стало возможным благодаря тому, что FastAPI основан на библиотеке Starlette.

В отличие от сервера WSGI, серверы ASGI могут поддерживать HTTP / 2 и WebSockets. С помощью Uvicorn мы можем создать веб-API, который может обеспечить высокую пропускную способность в контексте ввода-вывода.

Starlette использует более новый сервер ASGI асинхронного ввода-вывода и также поддерживает фоновые задачи. Следовательно, мы можем создавать быстрые веб-API с малой латентностью, используя FastAPI

3. Самая важная особенность; мы можем быстро создать конечные точки REST для нашего приложения для обработки данных

Пользователи Flask должны установить пакет Flask-restplus, чтобы создать конечные точки REST для своего приложения для обработки данных.

FastAPI поддерживает Rest операции GET, PUT, POST, DELETE, OPTIONS, HEAD, PATCH и TRACE без каких-либо дополнительных пакетов. Все маршруты вместе с их операциями автоматически генерируются в документации.

4. Приложение FastAPI легко установить, использовать и поддерживать.

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

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

Это подводит нас к последнему разделу статьи, где я продемонстрирую шаги для размещения приложения.

3. Пошаговая реализация

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

USECASE

1. Создайте виртуальную среду

2. Установите зависимости

Следующим шагом является установка необходимых модулей.

Во-первых, установите фастапи

В результате он также установит необходимые зависимости, такие как starlette == 0.13.4 и pydantic == 1.5.1.

Затем установите Uvicorn

Теперь, чтобы почистить веб-страницы, я собираюсь использовать библиотеку Pandas. Поэтому следующим шагом является установка pandas:

Давайте создадим структуру папок.

3. Создать структуру проекта

Для простоты давайте создадим следующую структуру папок.

Мы создали две папки: SmartApp и src в папке SmartApp. Кроме того, давайте создадим следующие три пустых Python файла:

Если вы хотите создать готовое к использованию решение, то я рекомендую использовать проект python cookie-cutter. Доступно много шаблонов, включая один, предназначенный для FastAPI.

Убедитесь, что виртуальная среда активирована.

4. Реализация кода Python

Следующий шаг включает в себя реализацию кода Python.

models.py

Откройте файл models.py и добавьте следующий код:

workflow_runner.py

Теперь, когда модели реализованы, давайте добавим код в workflow_runner.py. Это ядро ​​нашего приложения для обработки данных.

Этот файл будет содержать код для выполнения следующих двух шагов:

Обратите внимание, что метод run() в workflow_controller был объявлен как асинхронный, чтобы проиллюстрировать, как мы можем создать неблокирующую асинхронную операцию ввода-вывода.

Если мы выберем Dow Jone, это вызовет исключение. Это поможет мне продемонстрировать, как мы можем отображать дружественные пользователю ошибки.

Теперь мы готовы интегрировать FastAPI.

main.py

Наконец, мы собираемся добавить код в файл main.py

Сначала добавьте импорт:

Затем создайте экземпляр FastAPI() и объявите его как переменную приложения.

Мы даем ему название, описание и версию. Эта информация будет автоматически отображаться в документации.

Предоставьте конечную точку GET для обработки запроса, который вызывает workflow_runner.run() :

Обратите внимание, как я ожидаю на запуск функции.

Мы также можем пометить параметры запроса как необязательные, и документация будет автоматически отражена с учетом изменений. Мы объявили title значение метаданных для индекса параметра пути. Это появится в автоматической документации.

Обратите внимание, функция get_result() объявлена ​​как асинхронная. Это позволяет нам обслуживать запросы, не блокируя другие вызовы.

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

Последнее, на что следует обратить внимание, это то, что все исключения перехвачены, а затем возникает MyException.

Хотя лучшая практика заключается в том, чтобы явно перехватывать исключения и разбираться с ними по отдельности, но для демонстрационной цели, я перехватываю все исключения с помощью try / except.

Наконец, для обработки ошибок мы определяем конечную точку, которая может обрабатывать исключения типа MyException.

Наконец, добавьте код для запуска сервера uvicorn.

Мы закончили с реализацией.

5. Запуск серверного приложения

Давайте запустим приложение. Перейдите в папку, где находится main.py, и выполните следующую строку в терминале:

Reload позволит перезапустить сервер после изменения коды, которые позволяют быстрое развитие в процессе разработки.

Запуск команды покажет:

6. Использование Сервиса

Во-первых, давайте рассмотрим автоматическую документацию API

Он отобразит пользовательский интерфейс Swagger.

При нажатии на index отображается список указателей:

При запуске он показывает названия компаний в ответе:

Давайте выберем Dow Jones и посмотрим, получим ли мы дружественную ошибку:

Это было сделано автоматически FastAPI.

Вызов приложения Smart Data Science из другого приложения

Мы можем позвонить Curl:

Читайте также:  что значит переведи меня через майдан

Мы можем открыть браузер и перейти к URL-адресу для просмотра ответа:

Вы можете скачать спецификацию openAPI, перейдя по ссылке:

Мы видим, что проверка была встроена вместе с допустимыми значениями индекса, как показано ниже. Схема OpenAPI поддерживает интерфейс Swagger. Он включает в себя API и схему данных, как показано ниже:

Это документация OpenAPI для API, автоматически созданного FastAPI. Мы можем отправить его вызывающим сторонам API, чтобы они могли легко интегрировать свои услуги с нашим решением.

Обратите внимание, что члены перечисления индекса появляются в документации OpenAPI вместе с заголовком параметра и правилами проверки.

Источник

Почему вам стоит выбрать фреймворк FastAPI для своего следующего проекта

Авторизуйтесь

Почему вам стоит выбрать фреймворк FastAPI для своего следующего проекта

Senior Python Developer в Akvelon

FastAPI — это фреймворк для создания лаконичных и довольно быстрых HTTP API-серверов со встроенными валидацией, сериализацией и асинхронностью. Стоит он на плечах двух других фреймворков. Работой с web в FastAPI занимается Starlette, за валидацию отвечает Pydantic.

Комбайн получился лёгким, не перегруженным и более чем достаточным по функционалу.

Starlette — новый, шустрый и классные фреймворк, реализующий подход ASGI. В нем всё заточено на асинхронность и новые фишки 3-й ветки Python. Кроме этого в Starlette есть ещё целая пачка серьёзных плюшек:

Асинхронное программирование — это потоковая обработка программного обеспечения /пользовательского пространства, где приложение, а не процессор, управляет потоками и переключением контекста. В асинхронном программировании контекст переключается только в заданных точках переключения, а не с периодичностью, определённой CPU.

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

Основные возможности FastAPI

FastAPI — это, по сути, нашлёпка на родные классы Starlette, добавляющая пачку новых фич к уже и так неплохому фреймворку.

Важные причины выбрать FastAPI:

Когда стоит использовать FastAPI

Если вы ответили на большую часть «нет», то вам стоит присмотреться к другим фреймворкам, либо использовать FastAPI. Выбор остаётся за вами.

Источник

Почему стоит начать использовать FastAPI прямо сейчас

Привет, Хабровчане! В преддверии старта занятий в группах базового и продвинутого курсов «Разработчик Python», мы подготовили для вас еще один полезный перевод.

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

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

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

Прекрасный простой интерфейс

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

Для примера, давайте посмотрим, как в FastAPI определяется конечная точка.

Простой пример приложения с uvicorn :

Теперь приложение может принимать запросы. В этом случае запрос будет выглядеть следующим образом:

Вишенкой на торте будет автоматическая генерация документации в соответствии с OpenAPI с помощью интерактивного интерфейса Swagger.


Интерфейс Swagger для приложения на FastAPI

Async

Одним из самых больших недостатков веб-фреймворков Python WSGI по сравнению с аналогичными в Node.js или Go, была невозможность асинхронной обработки запросов. С момента появления ASGI – это больше не проблема, и FastAPI в полной мере реализует эту возможность. Все, что вам нужно сделать – это просто объявить конечные точки с помощью ключевого слова async следующим образом:

Внедрение зависимостей

В FastAPI есть действительно классный способ управления зависимостями. Несмотря на то, что разработчиков не заставляют насильно использовать встроенную систему внедрения для обработки зависимостей на конечных точках, такой способ работы настоятельно рекомендуется.

Для примера, давайте создадим конечную точку, где пользователи могут оставлять комментарии к определенным статьям.

FastAPI автоматически вычислит функцию get_database в рантайме при вызове конечной точки, поэтому вы сможете использовать возвращаемое значение на свое усмотрение. Для этого есть (по крайней мере) две веские причины.

Легкая интеграция с базами данных

Что бы вы ни выбрали, будь то SQL, MongoDB, Redis или что-нибудь другое, FastAPI не заставит вас строить приложение вокруг базы данных. Если вы когда-нибудь работали с MongoDB через Django, вы знаете, насколько это может быть болезненно. С FastAPI вам не нужно будет делать лишний крюк, поскольку добавление базы данных в стек пройдет максимально безболезненно. (Или, если быть точнее, объем работы будет определяться выбранной базой данных, а не сложностями, появившимися из-за использования какого-то конкретного фреймворка.)

Читайте также:  что значит тяжелые роды

Серьезно, посмотрите на эту красоту.

Вуаля! Уже вижу, как вы печатаете

в терминале на своем компьютере.

Поддержка GraphQL

Когда вы работаете со сложной моделью данных, REST может стать серьезной преградой. Очень не круто, когда малейшее изменение на фронте требует обновления схемы конечной точки. В таких случаях спасает GraphQL. Несмотря на то, что поддержка GraphQL – это не что-то новое для веб-фреймворков Python, Graphene и FastAPI хорошо работают вместе. Нет необходимости дополнительно ставить какие-либо расширения, например graphene_django для Django, все просто будет работать с самого начала.

+1: Отличная документация

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

Если вы хотите увидеть FastAPI в действии, то у меня для вас припасено отличное руководство. Я написал подробную инструкцию, с помощью которой вы можете развернуть свою модель машинного обучения на Docker, Docker Compose и GitHub Actions!

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

Источник

FastAPI

The current page still doesn’t have a translation for this language.

But you can help translating it: Contributing.

FastAPI framework, high performance, easy to learn, fast to code, ready for production

FastAPI is a modern, fast (high-performance), web framework for building APIs with Python 3.6+ based on standard Python type hints.

The key features are:

Fast: Very high performance, on par with NodeJS and Go (thanks to Starlette and Pydantic). One of the fastest Python frameworks available.

Fast to code: Increase the speed to develop features by about 200% to 300%. *

* estimation based on tests on an internal development team, building production applications.

Sponsors¶

Opinions¶

«[. ] I’m using FastAPI a ton these days. [. ] I’m actually planning to use it for all of my team’s ML services at Microsoft. Some of them are getting integrated into the core Windows product and some Office products.«

«We adopted the FastAPI library to spawn a REST server that can be queried to obtain predictions. [for Ludwig]«

«Netflix is pleased to announce the open-source release of our crisis management orchestration framework: Dispatch! [built with FastAPI]«

«I’m over the moon excited about FastAPI. It’s so fun!«

«If you’re looking to learn one modern framework for building REST APIs, check out FastAPI [. ] It’s fast, easy to use and easy to learn [. ]«

«We’ve switched over to FastAPI for our APIs [. ] I think you’ll like it [. ]«

Typer, the FastAPI of CLIs¶

Typer is FastAPI’s little sibling. And it’s intended to be the FastAPI of CLIs. ⌨️ 🚀

Requirements¶

FastAPI stands on the shoulders of giants:

Installation¶

You will also need an ASGI server, for production such as Uvicorn or Hypercorn.

Example¶

Create it¶

Note:

If you don’t know, check the «In a hurry?» section about async and await in the docs.

Run it¶

Run the server with:

The command uvicorn main:app refers to:

Check it¶

You will see the JSON response as:

You already created an API that:

Interactive API docs¶

You will see the automatic interactive API documentation (provided by Swagger UI):

Alternative API docs¶

You will see the alternative automatic documentation (provided by ReDoc):

Example upgrade¶

Now modify the file main.py to receive a body from a PUT request.

Declare the body using standard Python types, thanks to Pydantic.

Interactive API docs upgrade¶

Alternative API docs upgrade¶

Recap¶

In summary, you declare once the types of parameters, body, etc. as function parameters.

You do that with standard modern Python types.

You don’t have to learn a new syntax, the methods or classes of a specific library, etc.

Just standard Python 3.6+.

For example, for an int :

or for a more complex Item model:

. and with that single declaration you get:

Coming back to the previous code example, FastAPI will:

We just scratched the surface, but you already get the idea of how it all works.

Try changing the line with:

. and see how your editor will auto-complete the attributes and know their types:

Performance¶

Independent TechEmpower benchmarks show FastAPI applications running under Uvicorn as one of the fastest Python frameworks available, only below Starlette and Uvicorn themselves (used internally by FastAPI). (*)

To understand more about it, see the section Benchmarks.

Optional Dependencies¶

Used by FastAPI / Starlette:

License¶

This project is licensed under the terms of the MIT license.

Источник

Строительный портал