Starlette
Starlette - это легковесный ASGI фреймворк/набор инструментов, который идеален для построения высокопроизводительных асинхронных сервисов.
Starlette очень простой и интуитивный. Он разработан таким образом, чтобы быть легко расширяемым и иметь модульные компоненты.
В нём есть:
- Впечатляющая производительность.
- Поддержка веб-сокетов.
- Фоновые задачи.
- Обработка событий при старте и финише приложения.
- Тестовый клиент на основе HTTPX.
- Поддержка CORS, сжатие GZip, статические файлы, потоковая передача данных.
- Поддержка сессий и куки.
- 100% покрытие тестами.
- 100% аннотированный код.
- Несколько жёстких зависимостей.
В настоящее время Starlette показывает самую высокую скорость среди Python-фреймворков в тестовых замерах. Быстрее только Uvicorn, который является сервером, а не фреймворком.
Starlette обеспечивает весь функционал микрофреймворка, но не предоставляет автоматическую валидацию данных, сериализацию и документацию.
FastAPI добавляет эти функции используя подсказки типов Python и Pydantic. Ещё FastAPI добавляет систему внедрения зависимостей, утилиты безопасности, генерацию схемы OpenAPI и т.д.
Uvicorn
Uvicorn - это молниеносный ASGI-сервер, построенный на uvloop и httptools.
Uvicorn является сервером, а не фреймворком. Например, он не предоставляет инструментов для маршрутизации запросов по ресурсам. Для этого нужна надстройка, такая как Starlette или FastAPI.
Pydantic
Pydantic - это библиотека для валидации данных, сериализации и документирования (используя JSON Schema), основываясь на подсказках типов Python, что делает его чрезвычайно интуитивным.