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

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

Максим Кузнецов
Максим Кузнецов

Senior Python Developer в Akvelon

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

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

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

  • GraphQL из коробки
  • Веб-сокеты уже встроены и готовы к работе
  • Готовый набор миддлверов для работы с авторизацией/аутентификацией, CORS
  • Встроенные асинхронные таски

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

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

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

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

  • Плюшки для создания REST API сервисов + Swagger-документация для методов. Starlette ориентируется на модный GraphQL, FastAPI заботится о тех, кто пилит REST.
  • Удобные примочки, построенные на подсказках типов переменных. Например, встроенные валидаторы данных.
  • Приятные полезности для процессов авторизации и аутентификации — поддержка JWT, OAuth2.

Пример простого приложения на FastAPI

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

  1. Асинхронность
  2. Типизированность
  3. Встроенная документация (Swagger)
  4. Применение websockets

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

  1. Когда в вашем проекте нужна производительность и она должна быть выше, чем у других фреймворков — например, Django.
  2. Когда в вашем проекте нужна асинхронность.
  3. Если вы в проекте используете запросы к другим сервисам (использование асинхронных http-запросов).
  4. Если хотите использовать websockets из коробки.

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

Полезные ссылки