Разное

Framework python: 10 веб-фреймворков Python, с которыми стоит работать в 2018 году

Содержание

Самые лучшие веб-фреймворки Python в 2020 году

Согласно ежегодному исследованию Stack Overflow (за 2019 год), Python стал самым быстрорастущим языком программирования. Про эволюцию Питона можете почитать в нашей статье. Также это наиболее универсальный язык, позволяющий написать и простой скрипт для парсинга, и высоконагруженный сайт, обрабатывающий миллионы запросов пользователей. Идеи для своих проектов можно посмотреть по ссылке.  Но писать свой проект с нуля — сложный и трудоемкий процесс. И даже проделав такой тяжкий труд, вы столкнетесь с проблемами в дальнейшей поддержке этого проекта, особенно если ею будут заниматься другие разработчики, не знающие его структуры. Поэтому нам нужны веб-фреймворки Python.

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

1. Django

Звезд на GitHub: 47.8k

Django на сегодняшний день, без сомнения, является одним из самых популярных веб фреймворков Python. Его слоган “фреймворк для перфекционистов с дедлайнами” как нельзя лучше отражает его философию. В нем «из коробки» есть все необходимое для быстрой и эффективной разработки.

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

Пожалуй лучшей иллюстрацией возможностей этого фреймворка может послужить Instagram, созданный на Django в 2010 г. и проданный Facebook в 2012 г. за $1 млрд.

Ссылка на оф.сайт: http://www.djangoproject.com/

2. Flask

Звезд на GitHub: 49.4k

Flask — это микрофреймворк, состоящий всего из двух компонентов: Werkzeug и Jinja 2.

Werkzeug — это простой маршрутизатор, который обрабатывает запросы и направляет ответы. Также он обеспечивает совместимость с WSGI для использования фреймворка с веб-сервером.

Jinja 2 — это шаблонизатор, который подставляет сгенерированные на сервере данные в сверстанную HTML-страницу.

У Flask нет ни слоя для работы с базами данных, ни иного функционала, предоставляемого другими фреймворками. По сути, Flask — это просто маршрутизатор запросов. Все остальное, что может потребоваться в разработке, нужно либо писать самому, либо подключать необходимые модули, в терминах Flask называемые blueprint.

Но не стоит заблуждаться, считая что данный фреймворк подходит только для небольших проектов. В 2015 г. разработчик Pinterest Steven Cohen в своем интервью рассказал, что Flask обрабатывает 12 млрд. ежедневных запросов.

Ссылка на оф.сайт: http://flask.pocoo.org/

3. Tornado

Звезд на GitHub: 18.9k

Tornado — это асинхронный веб-сервер и фреймворк, позволяющий разрабатывать высоконагруженные веб-сервисы, способные обрабатывать десятки тысяч запросов. Это, возможно, самый первый асинхронный фреймворк, написанный на Python. Он был разработан компанией FriendFeed, которую в 2009 приобрел Facebook, после чего исходный код фреймворка стал доступен open source.

Ссылка на оф.сайт: http://www.tornadoweb.org/

4. AIOHTTP

Звезд на GitHub: 9.3k

AIOHTTP — это асинхронный фреймворк, созданный русским программистом, разработчиком ядра Python, Андреем Светловым, который работал в Python над библиотекой asyncio. Библиотека развивалась, хотелось иметь HTTP, так и родилась идея создания AIOHTTP. Сейчас, как и большинство асинхронных фреймворков, он поддерживает и вебсокеты, и стриминги, и сигналы. Также одним из первых AIOHTTP начал поддерживать контекстные переменные, появившиеся в Python 3.7.

Ссылка на оф.сайт: https://docs.aiohttp.org/

5. Bottle

Звезд на GitHub: 6.7k

Bottle — это быстрый, простой и легковесный веб-фреймворк. Состоит он всего из одного файла (bottle.py) и не имеет зависимостей, кроме стандартной библиотеки Python. За счет своей минималистичности он работает быстрее большинства своих конкурентов, при этом имеет все необходимое для создания небольших проектов:

  • встроенный HTTP сервер,
  • роутинг с поддержкой URL-параметров,
  • поддержка шаблонов,
  • удобная работа с формами,
  • загрузка файлов,
  • отладка в “debug”-режиме.

Ссылка на оф.сайт: http://bottlepy.org/

Самые быстрые Python веб-фреймворки в 2019 / Хабр

В 2018 году Python укрепил свои позиции популярности среди программистов и вошел в Top 3 самых популярных языков на github. Все больше и больше людей переходит на светлую сторону…то есть Python. Появилось еще большее количество разработчиков, которые интересуются данным языком и ведут разработку своих проектов с его помощью. Одним из популярных направлений для Python является web-разработка. Хочется, чтобы не только процесс разработки был удобным и быстрым, но и сами проекты могли похвастаться скоростью и стабильностью работы.

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

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

Участники тестирования

Django

Версия: 2.1.4
Описание: самый популярный комбайн для Python, который из коробки решает множество проблем (админка, авторизация, логирование, ORM, и т.д). Это упрощает жизнь разработчика, но если мы ставим в приоритет скорость работы — то иногда такой комбайн играет против нас и это сказывается на производительности. По этой причине номинацию Fastest Python Web Framework in 2019 он скорее всего не возьмет.

Flask

Версия: 1.0.2
Описание: самый популярный фреймворк на Python (по звездам в GitHub обгоняет даже Django). Популярный выбор в случаях разработки мелких проектов, для которых не нужны те плюшки, которые есть в Django. Позволяет быстро развернуть приложение. Возможно быстрее чем Django по скорости работы, но имеет очень маленькую функциональность “из коробки”.

AioHTTP

Версия: 3.5.1
Описание: очень привлекательный асинхронный Python Framework. Имеет версию клиента и сервера, что значительно развязывает руки при разработке. Обладает очень удобными асинхронными запросами с версии клиента, а также очень хорошие показатели скорости работы сервера при большом количество запросов. Точно должен попасть в тройку лидеров.

Sanic

Версия: 18.12
Описание: можно сказать, что это “многопоточный Flask” со всеми вытекающими. По этой причине мы думаем, что результаты должны быть очень хороши.

Tornado

Версия: 5.1.1
Описание: асинхронный ветеран Python движения, задавший тренд асинхронности в 2010 году. Не теряет своей актуальности и получил 5ю версию в 2018 году. Достаточно высокий порог входа для новичков. Популярен среди олдскульных питонистов, и мы думаем не зря. Должен показать хорошие результаты.

Vibora

Тестируемая версия: релизов на GitHub нет
Описание: многообещающий фреймворк, появившийся в июне 2018 и за последнии полгода набравший более 4000 звезд. Имеет впечатляющие замеры производительности в GitHub. Мы думали именно Vibora станет фаворитом нашей гонки, но к сожалению из-за отсутствия возможности запуска под Python >=3.7 и отсутствия стабильной версии фреймворка мы исключили Vibora.

В GitHub разработчики обещают “кардинально новый” Vibora уже скоро. Посмотрим, что у них получится и обязательно напишем об этом.

Методика тестирования

Тестирование проводилось на Apple iMac 27» Retina 5K 2017, CPU: 3.5GHz i5, RAM: 8GB, 1000GB Fusion Drive, OSX 10.14.2 при помощи утилиты WRK:

wrk -t12 -c400 -d30s http://127.0.0.1:8080/db/

Тесты проводились на Python 3.7.2. Все фреймворки запускались при помощи Gunicorn с двумя воркерами. Возможно в каких-то случаях использование uwsgi сказалось бы на результатах, но так как мы поставили цель тестировать фреймворки, а не способы их запуска — решили этим пренебречь.

У нас был всего один вид тестов: DB Test, в котором мы получаем строковые данные из базы данных и возвращаем их в виде html-ответа (1 запись в 79 bytes). В качестве базы данных использовался Postgres 11. В качестве драйвера обращений к базе использовался psycopg2 в случае синхронных фреймворков и asyncpg в случае асинхронных.

В качестве event loop библиотеки для асинхронных фреймворков решили использовать uvloop.

Результаты

Запросов в секунду

Вполне ожидаемые лидирующие позиции aiohttp и Sanic, но неожиданные результаты от Tornado.

Передача данных в секунду (Кб)

По количеству переданных данных в секунду Django сильно отстает.

Среднее время запроса (мс)

Снова неприятно удивляет Tornado, на который мы изначально делали ставку. Впечатляет Flask, который по среднему времени запроса конкурирует с потенциальными лидерами.

Максимальное время запроса (сек)

Все “подопытные” показали практически одинаковые результаты по максимальному времени запроса. Все, как мы и ожидали.

Финальные результаты








12 threads

400 connections

AvgMaxRequests/secTransfer/sec (KB)
Latency (ms)Req/SecLatency (ms)Req/Sec
Django147,99120,911,98640425,7178,99
Flask186,865,651,75280546,2127,48
aiohttp165,07247,161,985851966,28439,72
Sanic194,8170,851,984701520,9292,6
Tornado279,3101,711,74272778,75222,07

Итоги

Aiohttp: лидер по производительности на начало 2019 года. Если ваша задача требует ультимативной производительности — то стоит к нему присмотреться. К тому же можно поэкспериментировать с параметрами запуска aiohttp, чтобы выжать из него еще больше. Имеет версию клиента, что позволяет без дополнительных библиотек делать асинхронные запросы. Поэтому для реализации своего нового высоконагруженного сервиса мы выбрали его.

Sanic: популярность фреймворка идет впереди его производительности. Чуда не случилось и обогнать лидера не вышло. В совокупности с тредом на Reddit о проблемах c безопасностью — мы бы не стали использовать Sanic прямо сейчас и подождали действий от разработчиков.

Tornado: “разочарование года”. В связи с результатами — не думаем, что Tornado стоит выбирать для реализации каких-либо новых проектов. Надеемся разработчики что-нибудь придумают и исправят ситуацию.

Django показал ожидаемый результат. Мы любим Django за его возможности и избавление нас от рутины, а не за скорость работы. Обширное community, большое количество материалов в Сети, большое количество реализованных проектов в открытом доступе — все это делает его привлекательным для новичков. Если бы у нас стояла задача быстро разработать MVP типичного web-сервиса — мы бы выбрали в 2019 именно его.

Flask тоже показал ожидаемый результат. Обошел Django за счет того, что имеет не такой богатый функционал из коробки. Не дотянул до скорости асинхронных фреймворков. Мы бы выбрали его в 2019 для реализации небольших pet-проектов или тогда, когда уже важна скорость, но разбираться с асинхронными фреймворками желания еще нет.

Все исходные файлы бенчмарков вы можете посмотреть в репозитории Python Frameworks Benchmark.

Новые Python веб-фреймворки 2020 с примерами кода

Python считается одним из самых популярных языков для создания веб-сервисов. За его плечами как скорые, небрежные RESTful API, так и полноценные веб-приложения, обслуживающие миллионы пользователей. Работающие в данной сфере наверняка уже использовали некоторые популярные фреймворки для создания сайта — Django, Flask, Falcon, Tornado или CherryPy.

Содержание

За последние пару лет появилось довольно много неплохих фреймворков, и создается впечатление, что ветеранам скоро придется подвинуться. Новые веб-фреймворки используют свежий подход к решению проблем, делая акцент на производительности и выразительности API. Рассмотрим 11 новых веб-фреймворков Python, на которые вам стоит обратить внимание при создании следующего сайта.

Веб-фреймворк Python Sanic

Sanic позиционирует себя как веб-сервер и веб-фреймворк, созданный для быстрого запуска. Он позволяет использовать синтаксис async/await, добавленный в Python 3.5. По этой причине код не блокируется и отличается скоростью выполнения. Sanic использует uvloop и ujson, когда нужно помочь с производительностью, однако данные пакеты являются опциональными.

Есть вопросы по Python?

На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!

Telegram Чат & Канал

Вступите в наш дружный чат по Python и начните общение с единомышленниками! Станьте частью большого сообщества!

Паблик VK

Одно из самых больших сообществ по Python в социальной сети ВК. Видео уроки и книги для вас!


Установка Sanic

Пример Hello world на Sanic

from sanic import Sanic
from sanic.response import json

app = Sanic()

@app.route(‘/’)
async def test(request):
return json({‘hello’: ‘world’})

if __name__ == ‘__main__’:
app.run(host=’0.0.0.0′, port=8000)



from sanic import Sanic

from sanic.response import json

 

app = Sanic()

 

@app.route(‘/’)

async def test(request):

    return json({‘hello’: ‘world’})

 

if __name__ == ‘__main__’:

    app.run(host=’0.0.0.0′, port=8000)

Sanic на GitHub »

Веб-фреймворк Python Starlette

Starlette является легким фреймворком ASGI, что идеален для создания высокопроизводительных сервисов asyncio. Он может использоваться как самостоятельный фреймворк, так и как инструментарий ASGI. Поставляется вкупе с обширным ассортиментом инструментов, поддерживает WebSockets, GraphQL, внутрипроцессовые фоновые задачи, а также текстовый клиент, построенный на Requests Python.

Установка Starlette

Пример Hello world на Starlette 

from starlette.applications import Starlette
from starlette.responses import JSONResponse
import uvicorn

app = Starlette(debug=True)


@app.route(‘/’)
async def homepage(request):
return JSONResponse({‘hello’: ‘world’})

if __name__ == ‘__main__’:
uvicorn.run(app, host=’0.0.0.0′, port=8000)



from starlette.applications import Starlette

from starlette.responses import JSONResponse

import uvicorn

 

app = Starlette(debug=True)

 

 

@app.route(‘/’)

async def homepage(request):

    return JSONResponse({‘hello’: ‘world’})

 

if __name__ == ‘__main__’:

    uvicorn.run(app, host=’0.0.0.0′, port=8000)

Starlette на GitHub »

Веб-фреймворк Python Masonite

Masonite является веб-фреймворком Python, сконцетрированном на разработке. Он стремится соответствовать подходу «все включено». Это отличный инструментарий программиста с огромным количеством функционала и чрезвычайно растяжимой архитектурой.

У Masonite простой и выразительный механизм маршрутизации, несложная система миграции, что работает без всяких «танцев с бубном», а также отличный стиль Active Record ORM под названием Orator. Так же можете ознакомиться с Peewee ORM.

Установка Masonite

Masonite на GitHub »

Веб-фреймворк Python FastAPI

FastAPI является современным, высокопроизводительным веб-фреймворком для создания API на Python 3.6+ основанный на подсказки типов Python. Создан поверх Starlette и является одним из самых быстрых и доступных фреймворков Python.

FastAPI базируется, а также является совместимым, с открытыми стандартами для API — OpenAPI (ранее известный как Swagger) и JSON Schema.

Установка FastAPI

Пример Hello world на FastAPI

from fastapi import FastAPI

app = FastAPI()


@app.get(«/»)
def read_root():
return {«Hello»: «World»}



from fastapi import FastAPI

 

app = FastAPI()

 

 

@app.get(«/»)

def read_root():

    return {«Hello»: «World»}

FastAPI на GitHub »

Веб-фреймворк Python Responder

Responder также основан на Starlette. При создании Responder главной идеей было совместить лучшие аспекты Flask и Falcon внутри одного-единcтвенного фреймворка.

У него есть встроенный статический сервер для продакшена, автоматические gzip-ответы, нативная поддержка GraphQL и встроенный клиент для тестов, использующий модуль Requests.

Установка Responder

Пример Hello world на Responder

import responder

api = responder.API()

@api.route(«/{greeting}»)
async def greet_world(req, resp, *, greeting):
resp.text = f»{greeting}, world!»

if __name__ == ‘__main__’:
api.run()



import responder

 

api = responder.API()

 

@api.route(«/{greeting}»)

async def greet_world(req, resp, *, greeting):

    resp.text = f»{greeting}, world!»

 

if __name__ == ‘__main__’:

    api.run()

Responder на GitHub »

Веб-фреймворк Python Molten

Molten является минималистичным, расширяемым, быстрым и производительным фреймворком для создания HTTP API на Python. Molten автоматически проверяет запросы на соответствие с предопределенными схемами, гарантируя, что обработчики будут запускаться только при наличии правильного ввода.

Molten поддерживает промежуточное программное обеспечение на основе функций и внедрение зависимостей, а также включает пакет molten.contrib, что содержит различные функциональные возможности, которые обычно требуются API на практике.

Это могут быть файлы конфигурации, метрики Prometheus, ID запросоы, сессии, SQLAlchemy, шаблоны, вебсокеты и многое другое.

Установка Molten

Пример Hello world на Molten

from molten import App, Route

def hello(name: str) -> str:
return f»Hello {name}!»

app = App(routes=[Route(«/hello/{name}», hello)])



from molten import App, Route

 

def hello(name: str) -> str:

    return f»Hello {name}!»

 

app = App(routes=[Route(«/hello/{name}», hello)])

Molten на GitHub »

Веб-фреймворк Python Japronto

Japronto является быстрым, масштабируемым, асинхронным HTTP инструментарием для Python 3.5+, интегрированным с конвейерным HTTP-сервером, базирующимся на uvloop и picohttpparser.

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

Установка Japronto

Пример Hello world на Japronto

from japronto import Application

def hello(request):
return request.Response(text=’Hello world!’)

app = Application()
app.router.add_route(‘/’, hello)
app.run(debug=True)



from japronto import Application

 

def hello(request):

    return request.Response(text=’Hello world!’)

 

app = Application()

app.router.add_route(‘/’, hello)

app.run(debug=True)

Japronto на GitHub »

Микро-фреймворк Python Klein

Klein — это микро-фреймворк для разработки веб-сервисов на Python. Klein отличается минималистичным API, что похож на Bottle и Flask. Стоит отметить, что он зависим от дополнительных инструментов вне стандартной библиотеки.

Причина в том, что Klein создан на широко используемых и хорошо протестированных компонентах, таких как Werkzeug и Twisted.

Установка Klein

Пример Hello world на Klein

from klein import run, route

@route(‘/’)
def home(request):
return ‘Hello, world!’

run(«localhost», 8080)



from klein import run, route

 

@route(‘/’)

def home(request):

    return ‘Hello, world!’

 

run(«localhost», 8080)

Klein на GitHub »

Микро веб-фреймворк Python Quart

Quart является Python ASGI веб-микрофреймворком. Он предназначен для того чтобы предоставить самый простой способ использования асинхронных функций в веб-контексте, особенно с уже существующими приложениями Flask.

Это становится возможным, благодаря тому, что Quart API является супер-набором для API Flask. Quart позиционирует себя в качестве полноценного веб-микрофреймворком. Он поддерживает HTTP/1.1, HTTP/2 и вебсокеты.

Установка Quart

Пример Hello world на Quart

rom quart import Quart, websocket

app = Quart(__name__)

@app.route(‘/’)
async def hello():
return ‘hello’

@app.websocket(‘/ws’)
async def ws():
while True:
await websocket.send(‘hello’)

app.run()



rom quart import Quart, websocket

 

app = Quart(__name__)

 

@app.route(‘/’)

async def hello():

    return ‘hello’

 

@app.websocket(‘/ws’)

async def ws():

    while True:

        await websocket.send(‘hello’)

 

app.run()

Quart на GitHub »

Web-Framework Python BlackSheep

BlackShepp является асинхронным веб-фреймворком для создания веб-приложений Python, которые не блокируются и в основе которых лежат события. Вдохновлен Flask и ASP.NET Core.

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

Установка BlackSheep

Пример Hello world на BlackSheep

from datetime import datetime
from blacksheep.server import Application
from blacksheep.server.responses import text

app = Application()

@app.route(‘/’)
async def home(request):
return text(f’Hello, World! {datetime.utcnow().isoformat()}’)



from datetime import datetime

from blacksheep.server import Application

from blacksheep.server.responses import text

 

app = Application()

 

@app.route(‘/’)

async def home(request):

    return text(f’Hello, World! {datetime.utcnow().isoformat()}’)

BlackSheep на GitHub »

Web-Framework Python Cyclone

Cyclone является веб-фреймворком, который реализует Tornado API в виде протокола Twisted. Идея в соединении элегантного и ясного Tornado API с циклами событий Twisted, что позволяет использовать огромное количество поддерживаемых протоколов.

Эта комбинация обеспечивает основу для создания гибридных серверов, способных очень эффективно обрабатывать HTTP, а также одновременно использовать электронную почту, ssh, sip, irc, причем одновременно.

Установка Cyclone

Cyclone на GitHub »

Лучшие фреймворки для разработки на Python

Перевод статьи Клеофаса Мулонго «Best Frameworks In Python Programming Language».

В настоящее время Python входит в число самых популярных языков программирования. Этот язык легко учить и легко использовать. Вероятно, этим и объясняется его популярность.

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

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

1. Django

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

Django имеет открытый исходный код. Помимо прочего, он предоставляет функционал для масштабирования ваших Python-проектов. Он регулярно обновляется, чтобы соответствовать последним версиям языка.

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

Django это универсальный фреймворк. Он может использоваться при создании любых сайтов, поскольку умеет доставлять веб-контент в различных форматах (например, JSON, XML, RSS). Также он дружественен к начинающим разработчикам. Даже если вы в Python еще новичок, с Django вы справитесь без всяких проблем.

2. Flask

Поскольку Python это мощный и универсальный язык программирования, вы вполне можете использовать его для создания самодостаточных приложений. Если вы планируете что-то подобное, подумайте об использовании фреймворка Flask. Он создан специально для построения таких приложений.

Flask поставляется со специальным шаблоном, известным как Jinja. Но при желании вы можете выбрать любой другой движок шаблонов. Flask считается открытым фреймворком. Вы можете использовать его для создания APIs, RESTful сервисов и endpoints.

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

3. Web2py

Web2py это бесплатный full-stack фреймворк с открытым исходным кодом. Он предназначен для скоростной разработки быстрых, масштабируемых, безопасных и портируемых веб-приложений на основе баз данных. Гибкость Web2py просто невероятна. Но помимо этого Web2py еще и самый портируемый Python-фреймворк. Поскольку для аутентификации он использует LDAP, вам не нужно будет его устанавливать и настраивать. Его можно запускать прямо с флешки.

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

4. CherryPy

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

Этот фреймворк поставляется со специальным плагином, который помогает мониторить производительность приложения.

5. Pylons

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

6. Pyramid

Pyramid это важный фреймворк для разработки на Python, который часто используется программистами. Обычно его применяют для идентификации и роутинга.

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

Заключение

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

TOP 5 фреймворков Python для Web-разработки в 2020 году — Записки преподавателя

Python — универсальный язык программирования и его можно пользовать для реализации любого класса задач от простого сценария автоматизации до системного программирования, от разработки игр до научных графических и веб‑приложений. Последнее время именно в науке о данных и машинном обучении Python набирает обороты. Интеграция серьёзных вычислительных приложений с web-приложениями для представленя результатов в интернете — ведущий тренд современности. Поэтому в этой статье обсуждаются 5 лучших веб‑фреймворков Python с более-менее внятными подробностями и комментариями.

Веб‑приложение состоит из двух частей: клиентской и серверной. Клиентская часть — это, в основном, HTML, CSS и Javascript и рассматривается она, как способ представления информации пользователям. Серверная часть, как правило, является наиболее сложной и описывает всю бизнес-логику приложения. Веб‑разработку серверной части можно выполнить на многих языках, таких как Java, .Net, PHP, Ruby on Rails, Javascript и т. д. Сегодня Python с его веб‑фреймворками также служит основой серверной части приложений.

Разработка серверной части без фреймворка утомительна, надо написать код для каждой повторяющейся рутинной штуки. Поэтому фреймворки и закрепились в качестве основы веб‑разработки. Сегодня почти все программы этого сегмента включают в себя веб‑фреймворк. Веб‑фреймворк — это заранее написанный код для выполнения рутинных задач и предоставления абстракций для собственного приложения. Например, аутентификация пользователей — встроенная функция веб‑фреймворка и почти везде предоставляется абстрактный уровень использования баз данных. Итак, веб‑фреймворк помогает разрабатывать приложение быстрее и эффективнее с хорошо написанными модулями и функциональными возможностями. Python — это проект с открытым исходным кодом и многие его веб‑фреймворки также открыты и бесплатны, например, Flask, Django, web2py, bottle и другие.

Здесь обсуждаются пять лучшиш (IMHO) веб‑фреймворков Python, приведены примеры их использования и другая сопутствующая информация, которая поможет выбрать правильный фреймворк для выполнения своей очередной работы. Веб‑фреймворки можно сгруппировать в две категории: фреймворк полного стека (множество модулей) и микро‑фреймворк (небольшой и с ограниченными возможностями).

Django — веб‑фреймворк полного стека, подходящий для больших и сложных проектов. Помогает быстро и чисто сделать веб‑проект. Django бесплатен, с открытым исходным кодом. Создан и поддерживается сотней опытных веб‑разработчиков. Согласно документации Django, некоторые из перечисленных в ней функций невероятно быстрые, надежно защищенные, чрезвычайно масштабируемые и невероятно универсальные.

Django — полнофункциональный веб‑фреймворк, подходящий для больших и сложных проектов.

Web2py — это еще один фреймворк полного стека для быстрой, масштабируемой, безопасной разработки портативных веб‑приложений с управлением базами данных.

Ещё один полнофункциональный веб-фреймворк

Flask — фреймворк для создания веб-приложений на языке программирования Python, использующий набор инструментов Werkzeug, а также шаблонизатор Jinja2. Относится к категории так называемых микро‑фреймворков — минималистичных каркасов веб‑приложений, сознательно предоставляющих лишь самые базовые возможности. Flask также очень полезен для разработки API (Application Programming Interface).

Flask — мини-фреймворк для создания веб-приложений

Вот вам пример кода «Hello, World!»:

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"

Bottle — быстрый, простой и легкий мини‑фреймворк. Он представляет собой один файловый модуль и не имеет никаких зависимостей, кроме стандартной библиотеки Python. Очень удобен для быстрого прототипирования и создания личного веб-сайта.

Bottle — быстрый, простой и легкий микро‑фреймворк
Вот пример кода «Hello, World!» для Bottle:

from bottle import route, run, template

@route('/hello/<name>')
def index(name):
    return template('<b>Hello {{name}}</b>!', name=name)

run(host='localhost', port=8080)

CherryPy — мини‑фреймворк Python. Отличается надежностью, простотой запуска нескольких HTTP‑серверов, гибкой системой плагинов, встроенными инструментами кэширования, кодирования, сеансов, аутентификации, статического контента, подкачки и настройки, встроенным профилированием, покрытием и поддержкой тестирования.

Cherrypy — мини-фреймворк Python

Вот пример кода «Hello, World!» для Cherry:

import cherrypy

class HelloWorld(object):
    @cherrypy.expose
    def index(self):
        return "Hello World!"

cherrypy.quickstart(HelloWorld())

Сравнительные характеристики

Все, перечисленных выше фреймворки, бесплатны, кросс-платформенны и являются проектами Open Source. Посмотрите небольшую сравнительную табличку:

Параметр

Django

Web2py

Flask

Bottle

CherryPy

Первый выпуск

2005

2007

2010

2009

2002

Актуальная версия

2.2, April 2019

2.17.2, October 2018

1.0.2,
May 2018

0.12.16,
December 2018

18.1.0, December 2018

Тип

Full

Full

Micro

Micro

Micro

Разраб.

Adrian Holovaty, Simon Willison

Massimo Di Pierro

Armin Ronacher

Marcel Hellkamp

Remi Delon,
Robert Brewer

Версия Python

Python 2.x или Python 3.x (Django 2.0 и выше)

Python 2.7 и Python 3.5+

Обе Python 2.x и Python 3.x

Python 2.5+ и 3.x

Python 2.x и Python 3.x

Примеры

Instant Press,
Ourway

Splunk Enterprise

Что же выбрать?

Здесь перечислены только 5 лучших, на мой взгляд, веб‑фреймворков Python, но их, конечно, гораздо больше. Сегодня, вопрос разработчика звучит так «Как выбрать фреймворк?». Мой прямой ответ может показаться предвзятым, поэтому помимо вышеприведённой информации, здесь показаны некоторые характеристики, полученные для этих систем в открытом доступе с GitHub, Stack Overflow и им подобных, а так-же с Российского портала вакансий удалённой работы remote-job.ru. GitHub и Stack Overflow является площадками для разработчиков. GitHub даёт возможность ставить звезды проектам, размещенным здесь, а на Stack Overflow можно задавать вопросы по поводу использования того или иного программного обеспечения. С другой стороны на remote-job.ru можно получить список вакансий, связанных с технологиями и ИТ‑компетенциями. Здесь использованы всего четыре метрики этих сайтов и все они не очень надежны, но могут помочь понять популярность веб‑фреймворков. (все цифры собраны из публичных источников по состоянию на 14 января 2020 года).

  1. Звёзды Github: общее количество звезд проекта, выставленных пользователям.
  2. Релизы Github: количество релизов каждого проекта, что отражает активность и зрелость проекта.
  3. Вопросы Stack-overflow: количество вопросов, заданных по определенной теме.
  4. Вакансии: количество вакансий, связанных с технологиями или ИТ‑компетенциями.

Метрика

Django

Web2py

Flask

Bottle

CherryPy

 

(Full-stack)

(Micro-framework)

Звезды
Github

46 528

1 832

48 385

6 594

1 130

Релизы
Github

272

72

30

75

127

Вопросы
Stack-overflow

217 030

2 094

32 621

1 371

1 300

Вакансии

42

0

18

4

0

 
А теперь зримо и наглядно:

Отсюда легко понять, что Django популярен в качестве веб‑фреймворка полного стека, а Flask, как микро‑фреймворк. Другие веб‑фреймворки набирают популярность и могут быть лучшим выбором для обучения и внесения значимого вклада в большой проект или для построения приложение на основе этих веб‑фреймворков.

Есть так множество других веб‑фреймворков для Python, таких как TurboGears, Pyramid (программный каркас) и т.д. Более подробно о том, как работают эти веб‑фреймворки, можно прочитать на веб‑сайтах проектов.

Спасибо, что вы здесь и продолжаете читать…

Использованы материалы TOP 5 PYTHON WEB FRAMEWORKS TO LEARN IN 2019

TOP 5 фреймворков Python для Web-разработки в 2020 году, опубликовано К ВВ, лицензия — Creative Commons Attribution-NonCommercial 4.0 International.

Респект и уважуха

что это такое? Краткий обзор HTML/CSS, PHP и Python-фреймворков


Библиотека Framework
Менее сложный Более сложный
Когда вы вызываете метод из библиотеки, вы находитесь в контроль. Управление перевернуто, фреймворки зовут вас.
Библиотека выполняет определенные операции. Фреймворк содержит основной поток, остальное строит пользователь.

Микро-фреймворк Фреймворк полного стека
простой и легкий в использовании Сложный и делает тяжелую работу
Маршрутизация URL-адресов RESTful часто Не нужно RESTful
Хороший выбор для небольших приложений Может использоваться для создания любых приложений
Используйте WSGI и работайте через HTTP-запрос / ответ. Предоставляет библиотеки, механизмы шаблонов, управление базами данных и т. Д.