9 лучших фреймворков Python для создания малых и корпоративных приложений

Питон – и забавная игрушка, и пугающий огнемет. То же самое относится к тому, что вы можете сделать с Python.


Питона любят любители, ученые и архитекторы.

С ним чертовски легко начать работу, он обладает абстракциями высшего порядка и возможностями метапрограммирования для создания больших и сложных систем, а также имеет множество библиотек для выполнения практически любых задач. Конечно, есть ограничения, когда речь идет о параллелизме и строгой типизации, но вы можете обойти их.

В этой статье мы рассмотрим некоторые из лучших фреймворков Python, когда речь идет о создании больших и малых веб-приложений..

Джанго

Джанго Фреймворк выдержал испытание временем веб-фреймворком для сообщества Python. Если вы напали на разработчика Python во сне и заставили его создать веб-приложение под дулом пистолета, они автоматически дойдут до Django, как Rubyist достигнет Rails.

И для этого есть веская причина. Django, как гласит слоган, – «веб-фреймворк для перфекционистов с установленными сроками». Это то, что называется структурой «с батарейками» (очень похоже на то, как Python является языком с батарейками), которая предоставляет все общие функциональные возможности «из коробки».

С этими функциями Django значительно сокращает время разработки:

  • Удобный и приятный ORM, с миграциями, автоматически создаваемыми и применяемыми средой.
  • Леса для автоматического создания админ-панели на основе ваших моделей.
  • Поддержка файлов cookie, сессий, промежуточного программного обеспечения, шаблонов и т. Д..
  • Функции безопасности, такие как предотвращение XSS, предотвращение CRSF и т. Д., Применяются автоматически.
  • Работает практически со всеми базами данных (легко найти адаптеры, где официальной поддержки не существует)
  • Первоклассная поддержка географических данных и пространственных запросов GeoDjango

И многое, многое другое. Достаточно сказать, что Django – это полноценный, дружественный веб-фреймворк..

Джанго для тебя?

Абсолютно да.

Django отлично подходит для всех случаев использования, будь то быстрое создание прототипа или планирование корпоративного приложения. Единственный нюанс, с которым вы столкнетесь, – это структура фреймворка. Поскольку Django наклоняется назад, чтобы сделать разработку быстрой и легкой для вас, он налагает свою структуру (концепцию, называемую «соглашение о конфигурации») на разработчика, с которой вы можете не согласиться. Например, если вы хотите заменить Django ORM чем-то другим (скажем, SQL Alchemy), будьте готовы к неожиданностям.

Хотите стать разработчиком полного стека с Django и Python? – Проверьте это фантастический онлайн курс.

колба

В то время как Django занимает почти весь ум в веб-разработке Python, колба сильный соперник.

В отличие от Django, Flask – это «микро-фреймворк», который означает, что он нацелен на получение правильных нескольких минимальных вещей и оставляет все остальное вам. Это «все остальное зависит от вас» может быть источником разочарования или восхищения, в зависимости от ваших целей. Для тех, кто знает, что делает и хочет с любовью создавать свои веб-приложения, выбирая компоненты по своему выбору, Flask – находка.

Колба предлагает следующие функции:

  • Маршрутизация, шаблоны, управление сессиями и другие полезные функции.
  • Полная поддержка юнит-тестирования
  • Минимальная подключаемая архитектура
  • Первоклассная поддержка REST
  • Поддержка Blueprints, уникальная архитектура Flask для крошечных веб-приложений
  • Выберите ваши пакеты для ORM, миграции и т. Д..
  • Гибкая структура приложения – разместите свои файлы там, где они наиболее важны для вас
  • Статическая подача файлов
  • WGSI-совместимый

Настой для тебя?

Как уже было сказано, Flask – это минимальный веб-фреймворк со всем, разбитым на отдельные компоненты, которые вы можете поменять. Если вы спешите создать прототип, вы потратите много времени на принятие тривиальных решений относительно базы данных, структуры папок, маршрутизации и т. Д., Которые могут оказаться контрпродуктивными. Flask работает лучше всего, когда вы работаете над стабильным, серьезным проектом среднего и крупного масштаба, особенно API REST..

бутылка

Если вы подумали, что подход Flask недостаточно минималистичен, и вам все еще нужно больше контроля, передайте привет бутылка.

Бутылка еще больше расширяется до такой степени, что единственной зависимостью является стандартная библиотека Python. Это означает, что не нужно устанавливать pip или pip, хотя это, скорее всего, потребуется в ближайшее время. Вот почему бутылка выделяется для некоторых людей:

  • Развертывание в одном файле. Да, все ваше приложение находится в одном «.py» файле.
  • Нет внешних зависимостей. Если у вас установлена ​​правильная версия Python, вы можете идти.
  • Поставляет свой шаблонизатор, который можно заменить на Jinja2, Mako или Cheetah..
  • Поддержка форм, заголовков, файлов cookie и загрузки файлов.
  • Встроенный веб-сервер, который можно легко заменить.

Бутылка для вас?

Если вы создаете действительно маленькое приложение (скажем, менее 500 строк кода) без особых требований, Bottle может иметь для вас большой смысл. Это полный, без излишеств, подход к созданию веб-приложений, но на практике вы обнаружите, что вам больше мешает, чем помогает Bottle. Причина в том, что реальный мир всегда меняется и прежде, чем вы это узнаете. Новые требования будут сброшены на вашу голову. В этот момент все в одном файле становится рутиной..

Кроме того, если вы думаете, что Bottle и Flask почти одинаковы, вы правы. Предложения сращивание два датируются 2012 годом, и даже Армин, создатель Flask, согласен с этим. Тем не менее, Марсель, создатель Bottle, придерживается строгого идеологического различия из-за подхода с одним файлом и настаивает на том, что оба остаются отдельными.

Zope

Zope это сложно объяснить, но я попытаюсь. Да, это веб-фреймворк, который можно использовать для создания больших или маленьких приложений, но это еще не все. Zope – это скорее платформа, которая состоит из инструментов (включая веб-фреймворки), созданных в соответствии с философией Zope и поддерживаемых корпорацией Zope.

Zope имеет несколько интересных компонентов и функций, подходящих для разработки корпоративных приложений:

  • Архитектура регистрации и обнаружения компонентов для настройки большого приложения.
  • ZODB – (единственная) объектная база данных для Python для естественного хранения объектов.
  • Полноценная структура и стандарты для систем управления контентом
  • Набор фреймворков веб-приложений – канонический еще называется Zope, хотя несколько новых фреймворков (таких как Grok) были построены поверх него.
  • Строгие стандарты для разработки, выпуска и обслуживания программного обеспечения.

Zope для вас?

Если вам нужна высоко структурированная среда для создания действительно больших приложений, Zope хорош. Тем не менее, вы столкнетесь со своей справедливой долей проблем. В то время как Zope продолжает развиваться, сообщество действительно небольшое, поскольку многие разработчики Python даже не слышали об этом. Найти учебники и обширную документацию сложно, поэтому будьте готовы много копаться (хотя сообщество действительно полезно!). Кроме того, разработчики Python, с которыми вы сталкиваетесь, могут не захотеть изучать Zope и «разбавлять» свои навыки..

TurboGears

TurboGears это очень гибкий фреймворк, имеющий действительно сочетаемую архитектуру. Это фреймворк, который масштабируется в соответствии с вашими потребностями, и вы можете использовать его для создания приложения из одного файла или многопользовательского приложения..

TurboGears обладает некоторыми элегантными функциями, некоторые из которых либо отсутствуют в популярных фреймворках (например, Django), либо их сложно создать:

  • Первоклассная поддержка нескольких баз данных
  • Транзакции с несколькими базами данных
  • Высоко модульный – начните с одного файла и масштабируйте столько, сколько вам нужно
  • Мощный ORM (SQLAlchemy, который является более зрелым и способным, чем ORM Джанго)
  • Сменная архитектура на основе спецификации WSGI
  • Встроенная поддержка шардинга базы данных
  • Функционально-управляемый интерфейс в отличие от глубоких, жестких объектно-ориентированных иерархий.

TurboGears для вас?

Если вы хотите успешно развиваться и хотите испытанную, зрелую и надежную среду вдали от медиа-шума «удивительного, следующего поколения» и всего остального, TurboGears отлично подойдет. Он пользуется большим уважением в сообществе и имеет полную и обширную документацию. Конечно, TurboGears не является мнением, что означает, что время начальной настройки и настройки может быть больше, но это идеальная среда для разработки корпоративных приложений..

web2py

web2py начался как хобби-проект и был выпущен в 2007 году. Его целью является сделать веб-разработку легкой и доступной для всех.

В результате Web2py принимает подход с нулевой зависимостью до крайности – у него нет требований, ничего не нужно устанавливать, и он включает в себя полнофункциональный веб-редактор для разработки, управления базами данных, а также развертывания..

Вы можете почти думать об этом как о Android Studio, которая представляет собой скорее целостную среду, чем просто фреймворк. Вот некоторые полезные функции, которые есть у Web2py:

  • Практически нет обучения.
  • Минимальное ядро ​​(всего 12 объектов), которое можно запомнить даже!
  • Чисто-Python-шаблонирование
  • Защита от XSS, CSRF и других атак
  • Приятный и последовательный API

Web2py для вас?

Web2py – это стабильная и забавная среда, но ее трудно рекомендовать в сравнении с другими вариантами, такими как Django, Flask и т. Д. Вряд ли есть какие-либо работы, и история с модульным тестированием невелика. Тем не менее, вам может понравиться API кода и общий опыт, предлагаемый платформой, особенно если вы создаете REST API..

CherryPy

CherryPy это еще одна микросхема, цель которой – обеспечить базовую функциональность фреймворка и быстро уйти.

Несмотря на то, что он сравним с другими микрофреймами, такими как Flask, CherryPy может похвастаться некоторыми отличиями:

  • Он содержит встроенный многопоточный сервер (то, что остается в списке пожеланий Flask)
  • На (одном) веб-сервере может размещаться несколько приложений!
  • Служите вашему приложению в качестве приложения WSGI (для взаимодействия с другими приложениями WSGI) или простого HTTP-сервера (который работает лучше)
  • Первоклассная поддержка профилирования и юнит-тестирования
  • Работает на PyPy (для настоящих любителей производительности), Jython и даже Android

CherryPy делает все это, а затем обычное, что вы ожидаете от веб-фреймворка.

Является ли CherryPy для вас?

Если вы в основном создаете сервисы RESTful, CherryPy гораздо более серьезный соперник, чем Flask. Это десятилетний фреймворк, который хорошо созрел и подходит как для малых, так и для больших приложений..

Sanic

Появление Node и его модели асинхронного программирования оставило позади многие сообщества, включая Python. В ответ на радар появился поток асинхронных веб-фреймворков., Sanic быть одним из них.

Саник во многом вдохновлен Flask, поскольку он заимствовал декораторов маршрутов, Blueprints и другие основные принципы работы крючков и грузила. И им не стыдно в этом признаться. Если вы являетесь поклонником Flask, то Sanic предлагает действительно неблокируемый ввод-вывод для соответствия уровням производительности приложений Node. Другими словами, Sanic – это Flask с поддержкой async / await!

По сравнению с CherryPy, Sanic имеет невероятное преимущество в производительности (только подумайте о том, как это будет с Flask!). Проверьте следующие результаты, проверенные DataWeave:

Как вы можете видеть, когда число одновременных обращений начинает превышать 50 в секунду, CherryPy практически задыхается и выдает высокую частоту отказов.

Sanic для вас?

В то время как рабочие характеристики Sanic уносят все остальное из воды, это может быть не лучшим выбором для вашего следующего проекта. Основной причиной является отсутствие асинхронных библиотек. Большая часть существующих инструментов и библиотек Python была написана для однопоточной версии CPython, не задумываясь о высоком параллелизме или асинхронных операциях. Если, например, ваш любимый ORM не поддерживает асинхронные операции, весь смысл использования Sanic будет побежден.

Из-за этих причин зрелости и доступности мы не будем больше рассматривать асинхронные фреймворки в Python..

Мазонит

Я столкнулся с этой концепцией некоторое время назад и подумал, что это шаг в правильном направлении. С тех пор версия 2.0 была выпущена, и я чувствую, что пришло время наконец дать Мазонит некоторые любят.

Проще говоря, Masonite – это версия Laravel на Python (известная PHP-инфраструктура, если вы не знали). Почему это имеет значение? Это важно, потому что Laravel был построен на принципах Ruby on Rails, и вместе эти две среды позволяют разработчикам, не являющимся Ruby, испытать «путь Rails» в выполнении задач.

Разработчики Laravel (и, в некоторой степени, Rails) будут чувствовать себя как дома, и буквально в кратчайшие сроки будут готовы к работе. Когда я попробовал Masonite (и я действительно представил одну или две проблемы, включая ошибку!), Я смог создать REST API с абсолютно нулевым мышлением, потому что моя мышечная память Laravel делала все.

Masonite представляет собой полнофункциональный каркас с батареями и предлагает несколько интересных вещей:

  • Стиль активной записи ORM
  • Миграции базы данных (которые, в отличие от Django, должны быть созданы разработчиком)
  • Мощный контейнер IoC для внедрения зависимостей
  • Собственный CLI (называемый «ремесло») для строительных лесов и выполнения задач
  • Первоклассная поддержка модульного тестирования

Самым большим «конкурентом» для Masonite является Django, так как сообщество делает все возможное, чтобы продвигать фреймворк как легкий, восхитительный и следующий важный шаг. Превзойдет ли это Джанго, покажет время (если вы спросите меня, у него есть приличный шанс), но для обсуждения, сравнивающего их, смотрите Вот а также Вот.

Мазонит для тебя?

Масонит по сравнению с Django еще младенец, поэтому его нельзя рекомендовать по сравнению с Django. Тем не менее, если вы знакомы с Rails (или с Laravel), вы будете благодарны за то, что может предложить Masonite. Он идеально подходит для быстрого создания прототипов, для которых необходимо все предварительно сконфигурировать и легко переключать.

Вывод

Там нет недостатка веб-фреймворков Python, больших и малых. В то время как для небольшого проекта вы можете выбрать практически все что угодно, у корпоративного приложения есть требования, которые не могут удовлетворить многие из этих платформ. Если вы спросите меня, для развития предприятия, Django (в некоторой степени), Zope и TurboGears, что приходит на ум. И даже среди них я склонен к TurboGears.

Тем не менее, любой архитектор, достойный его соли, может подобрать микрорамку и развернуть свою архитектуру. И это практически то, что происходит на практике, что объясняет успех Flask и подобные идеи.

Если вы новичок, то этот онлайн курс было бы полезно выучить Python.

TAGS:

  • питон

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map