
От переводчика: сегодня мы предлагаем вам перевод статьи, размещенной на Hackernoon компанией SteelKiwi. Она занимается разработкой программных решений b2b и b2c, а опытом, накопленным в процессе работы, делится с читателями своего блога.
Фреймворки облегчают жизнь разработчику, предлагая различные решения для разработки приложений и сервисов. Они автоматизируют внедрение стандартных решений, позволяя сэкономить время. Таким образом, разработчик фокусируется на приложении, а не на рутинных задачах, где не нужно творческое мышление.
Skillbox рекомендует: Практический курс «Python-разработчик с нуля».
Напоминаем: для всех читателей «Хабра» — скидка 10 000 рублей при записи на любой курс Skillbox по промокоду «Хабр».
В этой статье рассказывается о десяти фреймворках Python, которые будут полезны как для начинающих разработчиков, так и для профессионалов. В 2018 году старые фреймворки обновились, появились и новые инструменты, на которые стоит обратить внимание.
Прежде чем начать…
Когда вы начинаете выбирать фреймворк, оцените размер и сложность своего проекта. Если то, что вы разрабатываете, представляет собой большую систему с изрядным количеством функций, то full-stack фреймворк — то, что вам нужно. Если же вы создаете относительно небольшое приложение или сервис, тогда стоит обратить внимание на микрофреймворки.
Информация о некоторых фреймворках изложена на страницах «Википедии». Финальное решение, однако, вы должны принимать сами на основе уже озвученных выше принципов анализа собственного сервиса или приложения.
Full-stack фреймворки
Django

Django — свободный open-source full-stack фреймворк. Он позволяет добавить большинство стандартных функций единым пакетом вместо поиска отдельных библиотек.
Среди них — такие востребованные, как аутентификация, URL-маршрутизация, миграция схемы данных и т.п.
Django использует ORM для сопоставления объектов с таблицами баз данных. Один и тот же код работает с разными базами данных, так что переход из одной БД в другую становится простой задачей. Основными базами, с которыми работает Django, являются PostgreSQL, MySQL, SQLite и Oracle. Можно добавить и другие, но для этого понадобятся решения сторонних разработчиков.
Pyramid

Pyramid — open-source фреймворк, который дает максимум возможностей разработчику с минимальными затратами времени и ресурсов.
Наиболее интересная возможность фреймворка — работа как с большими, так и с малыми приложениями. Отдельно стоит выделить такие функции Pyramid, как:
- однофайловые приложения;
- генерация URL;
- масштабируемая конфигурация;
- гибкая схема аутентификации и авторизации;
- доступная пониманию техническая документация.
TurboGears

TurboGears — open-source full-stack фреймворк для веб-приложений. Он позволяет разработчику быстро создавать расширяемые веб-приложения, управляемые данными. TurboGears поставляется с удобными шаблонами и мощным и гибким ORM.
Наиболее важные функции фреймворка:
- поддержка различных баз данных;
- поддержка SQLObject и SQLAlchemy;
- валидация для FormEncode;
- Pylons как веб-сервер;
- инструменты командной строки.
Web2py

А это — масштабируемый open-source full-stack фреймворк для Python. Но прежде чем начать с ним работать, стоит запомнить, что с Python 3 он несовместим.
Зато Web2py поставляется с собственным IDEwhich: в нем есть редактор кода, дебаггер и деплой в один клик. Среди прочих функций и инструментов стоит выделить следующие:
- отсутствие необходимости в установке и настройке;
- работа в среде Windows, Mac, Google App Engine, Amazon EC2 и на любом хостинге, который поддерживает Python 2.5–2.7 или Java+Python;
- работа с различными протоколами;
- высокий уровень безопасности данных;
- трекер ошибок;
- обратная совместимость, которая позволяет без труда работать с приложениями и сервисами на основе прежних версий фреймворка.
Микрофреймворки
Flask

Это микрофреймворк, который предоставляется по лицензии BSD. Его разработчики вдохновлялись фреймворком Sinatra Ruby. Он зависит от инструментария Werkzeug WSGI и шаблона Jinja2.
У Flask модульный дизайн, который позволяет адаптировать его для выполнения многих задач. «Из коробки» разработчик получает следующие функции:
- встроенный сервер и дебаггер;
- шаблоны Jinja2;
- поддержка безопасных кукис;
- WSGI 1.0;
- Unicode;
- возможность подключения к любой ORM.
Создавался фреймворк для поддержки разработчиков веб-приложений, которые получили возможность выбирать расширения по вкусу.
Bottle

Еще один микрофреймворк, который изначально предназначался для создания API. Bottle отличает наличие единственного source-файла. Работа с ним не требует «танцев с бубном».
Его функции по умолчанию включают в себя маршрутизацию, шаблоны, утилиты и базовую абстракцию по стандарту WSGI:
- маршрутизация поддерживает запросы на отображение функциональных вызовов, позволяя вам получать чистые и динамические URL-адреса.
- шаблоны — много нужных инструментов, работающих «из коробки» вместе с полной поддержкой mako, jinja2 и cheetah.
- утилиты — удобный доступ к данным, загрузка файлов, куки, заголовки и другие метаданные, связанные с HTTP.
- встроенный сервер разработки HTTP, который поддерживает функции fapws3, bjoern, GAE, CherryPy и любой другой HTTP-сервер с WSGI.
Это отличное решение для прототипирования, изучения структуры веб-фреймворков и создания небольших приложений.
CherryPy

CherryPy — минималистичный веб-фреймворк с открытым исходным кодом. Он обеспечивает возможность создания веб-приложений Python, которое ничем не отличается от построения любой другой объектно-ориентированной программы.
По факту это веб-приложение, работающее под управлением CherryPy, является автономным приложением Python, использующее собственный многопоточный веб-сервер. Приложения CherryPy запускаются в любой операционной системе, поддерживающей Python (Windows, MacOS, Linux и т.д.). Они могут быть развернуты в любом окружении, где вы можете запускать обычное приложение Python. Вам не требуется Apache для приложений CherryPy, вы можете запустить приложение CherryPy в Apache, так же как в Lighttpd или IIS.
CherryPy позволяет использовать любой тип технологии для шаблонизации, доступа к данным и т.д. Он также может обрабатывать статьи, статику, куки, загружать файлы и все остальное, что умеют другие фреймворки.
Его отличительные способности:
- простой запуск нескольких HTTP-серверов одновременно;
- мощная конфигурационная система;
- гибкая система плагинов;
- возможности «из коробки»: кэширование, декодирование, сессии, аутентификация, статический контент и т.п.;
- возможность работы под Python 2.7+, Python 3.1+, PyPy, Jython и Android.
Асинхронные фреймворки
Sanic
Sanic — Python-фреймворк, который построен на uvloop и предназначен для быстрой обработки HTTP-запросов.
Он работает на Python 3.5+. Sanic поддерживает асинхронные обработчики запросов, что делает его совместимым с функциями async / wait Python 3.5. Это значительно повышает скорость работы.
В бенчмарке при обработке 100 соединений Sanic показал способность обрабатывать 33 342 запроса в секунду.
Tornado

Tornado — это веб-фреймворк Python и асинхронная сетевая библиотека одновременно. Он использует неблокирующий сетевой ввод-вывод и решает проблему C10k (это означает, что при правильной настройке он может обрабатывать 10 000+ одновременных подключений).
Все это делает его отличным инструментом для создания приложений, требующих высокой производительности и работы с десятками тысяч пользователей одновременно.
Основные достоинства:
- встроенная поддержка аутентификации пользователей;
- услуги в режиме реального времени;
- высококачественная производительность;
- язык веб-шаблонов на основе Python;
- неблокирующий HTTP-клиент;
- внедрение сторонних схем аутентификации и авторизации (Google OpenID / OAuth, Facebook Login, Yahoo BBAuth, FriendFeed OpenID / OAuth, Twitter OAuth);
- поддержка переводов и локализаций.
Бонус
Dash

Dash — фреймворк Python с открытым исходным кодом, используемый для создания аналитических веб-приложений. Он особенно хорош для специалистов по большим данным, которые не очень хорошо знакомы с веб-разработкой.
Приложения Dash — веб-серверы, которые запускают Flask и обмениваются данными с пакетами JSON по HTTP. Их интерфейс обеспечивает компоненты возможностями React.js.
Приложения, разработанные с помощью Dash, отображаются в веб-браузере и могут быть развернуты на серверах. Приложения Dash являются по своей сути кроссплатформенными.
В качестве вывода можно сказать, что фреймворков разработчикам предлагается действительно много. Каждый из них дает собственные уникальные возможности. Но выбор фреймворка — важное решение для будущего собственного проекта, и спешить с этим не следует.
Skillbox рекомендует:
- Практический годовой курс «PHP-разработчик с нуля до PRO»
- Образовательный онлайн-курс «Профессия Java-разработчик».
- Онлайн-курс «Веб-разработчик»