Wiki · Технологии разработки
Flask
Содержание 5 разделов
Flask – это микрофреймворк на Python для веб-приложений и API. В ядре у него маршруты, обработка запросов и шаблоны Jinja, а работу с базой, формы и авторизацию подключают отдельными расширениями. Flask развивает сообщество Pallets, код открыт по лицензии BSD-3-Clause.
Заказчик чаще всего слышит про Flask в двух ситуациях. Разработчик предлагает «быстро сделать API на Flask» для бота, калькулятора или обмена с CRM. Или выясняется, что внутренний сервис компании, написанный когда-то одним программистом, работает на Flask, и теперь его надо дорабатывать. В обоих случаях полезно понимать, что «микро» тут значит на самом деле.
Что значит «микро» во Flask
В документации Flask прямо сказано: «микро» не значит, что приложение помещается в один файл или что фреймворку чего-то не хватает. Это значит, что ядро простое, а большинство решений остаётся за командой. Слоя работы с базой и библиотеки форм во Flask нет и не будет: их берут из расширений и сторонних библиотек, чаще всего SQLAlchemy для базы.
Минимальное приложение выглядит так:
from flask import Flask
app = Flask(__name__)
@app.route("/api/status")
def status():
return {"status": "ok"}
Пять строк, и сервер отвечает на адрес /api/status. Отсюда и популярность Flask: на нём быстро стартовать. Обратная сторона в том, что каждый проект на Flask собран по-своему. Один разработчик взял SQLAlchemy и Flask-Login, другой написал авторизацию сам, третий разложил код в один файл на 3 000 строк.

Для каких задач Flask хватает
- Небольшое API: приём заявок с сайта, вебхуки от платёжного сервиса или CRM, бэкенд для чат-бота.
- Внутренний инструмент: страница с отчётом, загрузка прайса, калькулятор для менеджеров.
- Обёртка вокруг модели машинного обучения или скрипта на Python, которую надо открыть по HTTP.
- Прототип, который проверяют на нескольких пользователях, прежде чем делать полноценный продукт.
- Портал с кабинетами, ролями и админкой для менеджеров: всё это на Flask придётся собирать вручную.
- Сайт компании или магазин, где тексты и товары правит маркетолог: тут нужна CMS.
Flask, Django и FastAPI: что под какую задачу
| Flask | Django | FastAPI | |
|---|---|---|---|
| Что в коробке | Маршруты, шаблоны, остальное расширениями | ORM, админка, формы, авторизация | API с проверкой данных и автодокументацией |
| Под какую задачу | Небольшие сервисы и API, прототипы | Порталы, кабинеты, контентные проекты | API для фронтенда и мобильных приложений |
| Асинхронный код | Есть, но каждая такая функция идёт в отдельном потоке | Поддерживает частично | Изначально асинхронный |
| Насколько похожи проекты разных команд | Сильно различаются | Похожи, структура задана | Средне |
Про асинхронность Flask честно пишет в документации: асинхронные функции он выполняет в отдельном потоке, и это медленнее, чем у фреймворков, изначально построенных на ASGI. Если сервис будет держать много одновременных долгих запросов к внешним API, на это стоит смотреть до старта.
Долгие задачи вроде рассылки или выгрузки в 1С в любом из трёх фреймворков выносят в фоновую очередь, обычно Celery.
Что проверить, если у вас уже есть проект на Flask

- Список зависимостей (requirements.txt или pyproject.toml): какие расширения стоят и обновлялись ли они. На октябрь 2026 года актуальна ветка Flask 3.1.
- Как приложение запущено на сервере. Встроенный сервер разработки Flask в документации запрещено использовать на боевом сайте: он не рассчитан на безопасность и нагрузку. В продакшене нужен WSGI-сервер вроде Gunicorn или Waitress, а перед ним Nginx.
- Есть ли тесты и описание API. Без них новый разработчик будет разбираться в чужой сборке неделями.
- Где хранятся секретный ключ, пароли от базы и токены. Им место в переменных окружения, а не в коде.
Если сервис разросся и в нём появились роли, кабинеты и самописная админка, это повод обсудить перенос на Django. Переписывать ради моды не нужно: небольшое API на Flask спокойно живёт годами.
Запуск, расширения и переезд с Flask
Как запустить Flask-приложение на хостинге или своём сервере?
Flask-приложение запускают через WSGI-сервер, например Gunicorn, Waitress или mod_wsgi, а перед ним обычно ставят Nginx или Apache. Подойдёт VPS или хостинг с поддержкой Python. Если у вас обычный PHP-хостинг, уточните у провайдера, умеет ли он запускать Python-приложения.
Почему в заголовках ответа сайта виден Werkzeug?
Werkzeug в заголовке Server обычно отдаёт встроенный сервер разработки Flask, который документация запрещает ставить на боевой сайт. Попросите перевести запуск на WSGI-сервер.
Чем расширения Flask отличаются от встроенных модулей Django?
Расширения Flask пишут разные авторы, и каждое обновляется в своём темпе, а модули Django выходят вместе с фреймворком и проверены на совместимость. Поэтому при обновлении Flask-проекта приходится отдельно проверять каждое расширение.
Когда проект на Flask пора переносить на Django или FastAPI?
На Django переходят, когда в сервисе появились кабинеты, роли и админка, которые команда пишет вручную. На FastAPI смотрят, если проект стал чистым API с большим числом одновременных запросов к внешним сервисам. Пока Flask-приложение маленькое и стабильное, переезд обычно не окупается: проще навести порядок в зависимостях, добавить тесты и описание API, а к вопросу вернуться, когда появятся новые крупные задачи.
Если проект уже работает на Flask, берём его на доработку и поддержку: проверяем запуск на сервере, зависимости и безопасность.
Источники
- Flask: официальная документация, разделы Design Decisions in Flask и Deploying to Production
- Flask: журнал изменений (Changes)
- Pallets: репозиторий pallets/flask и лицензия BSD-3-Clause
Остались вопросы по теме «Flask»?
Напишите нам в Telegram или MAX. Ответит специалист, который отвечает за эту тему, или руководитель проектов в рабочее время.
Отвечает по темеСергей ЧерняковWeb-разработчикНад статьёй работали
Услуги
Услуги по теме
Посчитайте стоимость проекта за 2 минуты
Калькулятор соберёт смету по нашим тарифам: сайт, дизайн, интеграции и поддержка.
