Почему Datafold переехал с Flask на FastAPI — и дело не в производительности

public

Автор: Александр Морозов (co-founder & CTO, Datafold) · Python Channel · Moscow Python Conf++ 2021


Datafold — стартап из YCombinator, платформа мониторинга аналитических данных. Прошли акселератор, писали MVP за 1–2 месяца — за основу взяли Redash (MIT-лицензия, аналитические БД, SPA). Redash целиком построен на Flask: sqlalchemy, alembic, REST, auth, rate-limiters, CSRF, CLI. Через какое-то время решили менять стек.

Название доклада начинается с «Не highload» — и это принципиально. Причина переезда не в том, что Flask медленный. Причина в том, что типичный Flask-хэндлер — это огромный boilerplate для простых вещей: получить данные из тела запроса как JSON, провалидировать, сконвертировать. Хочешь нормальные сообщения об ошибках — boilerplate вырастает ещё в несколько раз. FastAPI решает это через type hints и Pydantic: код становится короче, читаемее и самодокументируемым.

Кому смотреть: разработчикам на Flask, которые думают о переходе на FastAPI — или уже переходят. Морозов рассказывает не то, что написано в документации, а конкретные проблемы при реальном переезде и как их обошли.

Из этого можно взять в работу: если у вас Flask и вы тратите значительное время на boilerplate для валидации запросов — это именно тот сигнал. FastAPI с Pydantic закрывает эту боль, а не задачу throughput.


Выбор Redash как основы был прагматичным: MIT-лицензия разрешает использовать код в закрытых форках, тематика близкая (аналитические БД, подключения к хранилищам данных), и это полноценный SPA с React. Не пришлось строить с нуля.

Проблема Flask проявилась в масштабе: каждый хэндлер требовал одних и тех же паттернов — и без фреймворкового решения для валидации это превращалось в ручной код. FastAPI через Python type hints и Pydantic делает описание схемы запроса и ответа декларативным, а валидацию — автоматической.

Доклад с Moscow Python Conf++ 2021. Статья спикера на Habr: https://habr.com/ru/companies/oleg-bunin/articles/575958/