AioHTTP против FastAPI: когда что выбирать
Я запускал в продакшене сервисы и на AioHTTP, и на FastAPI. Их часто сравнивают, но настоящий вопрос не «что лучше», а «что подходит под вашу ситуацию».
AioHTTP: сырая мощь, полный контроль
AioHTTP даёт низкоуровневый HTTP-сервер и клиент. Никакой магии. Роуты подключаешь вручную, парсинг запроса пишешь сам, каждую зависимость выбираешь сам. Это значит:
- Отлично для сервисов, где нужен жёсткий контроль над жизненным циклом запроса.
- Здорово, когда строишь что-то, что не укладывается в типичный REST CRUD.
- Никакой автоматической валидации — пишешь сам или берёшь свою библиотеку.
FastAPI: продуктивность и стандарты
FastAPI построен на Starlette и Pydantic. Даёт автоматическую валидацию запросов, OpenAPI-документацию из коробки и чистый DI. Компромисс:
- Pydantic добавляет накладные расходы — заметно на очень высоконагруженных эндпоинтах.
- «Магия» автовалидации может прятать баги, если не понимаешь, что происходит под капотом.
- Отлично для команд и API, которые потребляют другие разработчики.
Моё правило
Если у сервиса публичный API или его потребляет команда — берите FastAPI. Автодокументация и валидация экономят больше времени, чем стоят.
Если сервис внутренний, критичный к производительности или с необычными требованиями (много WebSocket, кастомные протоколы, стриминг) — AioHTTP даёт больше пространства.
Лучший фреймворк — тот, который ваша команда сможет дебажить в 2 часа ночи, не открывая документацию.