Почему вам стоит выбрать фреймворк FastAPI для своего следующего проекта
Senior Python Developer рассказывает о возможностях и особенностях фреймворка FastAPI, а также о проектах, в которых его стоит использовать.
![Аватарка эксперта Максим Кузнецов](https://media.tproger.ru/uploads/2021/06/1-autoconverted-6.jpeg)
Максим Кузнецов
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:
- Асинхронность
- Типизированность
- Встроенная документация (Swagger)
- Применение websockets
Когда стоит использовать FastAPI
- Когда в вашем проекте нужна производительность и она должна быть выше, чем у других фреймворков — например, Django.
- Когда в вашем проекте нужна асинхронность.
- Если вы в проекте используете запросы к другим сервисам (использование асинхронных http-запросов).
- Если хотите использовать websockets из коробки.
Если вы ответили на большую часть «нет», то вам стоит присмотреться к другим фреймворкам, либо использовать FastAPI. Выбор остаётся за вами.
Полезные ссылки
17К открытий18К показов