Python считается одним из самых популярных языков для создания веб-сервисов. За его плечами как скорые, небрежные RESTful API, так и полноценные веб-приложения, обслуживающие миллионы пользователей. Работающие в данной сфере наверняка уже использовали некоторые популярные фреймворки для создания сайта — Django, Flask, Falcon, Tornado или CherryPy.
Содержание
За последние пару лет появилось довольно много неплохих фреймворков, и создается впечатление, что ветеранам скоро придется подвинуться. Новые веб-фреймворки используют свежий подход к решению проблем, делая акцент на производительности и выразительности API. Рассмотрим 11 новых веб-фреймворков Python, на которые вам стоит обратить внимание при создании следующего сайта.
Веб-фреймворк Python Sanic
Sanic позиционирует себя как веб-сервер и веб-фреймворк, созданный для быстрого запуска. Он позволяет использовать синтаксис async
/await
, добавленный в Python 3.5. По этой причине код не блокируется и отличается скоростью выполнения. Sanic использует uvloop
и ujson
, когда нужно помочь с производительностью, однако данные пакеты являются опциональными.
Есть вопросы по Python?
На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!
Паблик VK
Одно из самых больших сообществ по Python в социальной сети ВК. Видео уроки и книги для вас!
Установка Sanic
1 |
pip install sanic |
Пример Hello world на Sanic
1 2 3 4 5 6 7 8 9 10 11 |
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) |
Веб-фреймворк Python Starlette
Starlette является легким фреймворком ASGI, что идеален для создания высокопроизводительных сервисов asyncio
. Он может использоваться как самостоятельный фреймворк, так и как инструментарий ASGI. Поставляется вкупе с обширным ассортиментом инструментов, поддерживает WebSockets, GraphQL, внутрипроцессовые фоновые задачи, а также текстовый клиент, построенный на Requests Python.
Установка Starlette
1 |
pip install starlette |
Пример Hello world на Starlette
1 2 3 4 5 6 7 8 9 10 11 12 13 |
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) |
Веб-фреймворк Python Masonite
Masonite является веб-фреймворком Python, сконцетрированном на разработке. Он стремится соответствовать подходу «все включено». Это отличный инструментарий программиста с огромным количеством функционала и чрезвычайно растяжимой архитектурой.
У Masonite простой и выразительный механизм маршрутизации, несложная система миграции, что работает без всяких «танцев с бубном», а также отличный стиль Active Record ORM под названием Orator. Так же можете ознакомиться с Peewee ORM.
Установка Masonite
1 |
pip install masonite-cli |
Веб-фреймворк Python FastAPI
FastAPI является современным, высокопроизводительным веб-фреймворком для создания API на Python 3.6+ основанный на подсказки типов Python. Создан поверх Starlette и является одним из самых быстрых и доступных фреймворков Python.
FastAPI базируется, а также является совместимым, с открытыми стандартами для API — OpenAPI (ранее известный как Swagger) и JSON Schema.
Установка FastAPI
1 |
pip install fastapi |
Пример Hello world на FastAPI
1 2 3 4 5 6 7 8 |
from fastapi import FastAPI app = FastAPI() @app.get("/") def read_root(): return {"Hello": "World"} |
Веб-фреймворк Python Responder
Responder также основан на Starlette. При создании Responder главной идеей было совместить лучшие аспекты Flask и Falcon внутри одного-единcтвенного фреймворка.
У него есть встроенный статический сервер для продакшена, автоматические gzip-ответы, нативная поддержка GraphQL и встроенный клиент для тестов, использующий модуль Requests.
Установка Responder
1 |
pip install responder |
Пример Hello world на Responder
1 2 3 4 5 6 7 8 9 10 |
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() |
Веб-фреймворк Python Molten
Molten является минималистичным, расширяемым, быстрым и производительным фреймворком для создания HTTP API на Python. Molten автоматически проверяет запросы на соответствие с предопределенными схемами, гарантируя, что обработчики будут запускаться только при наличии правильного ввода.
Molten поддерживает промежуточное программное обеспечение на основе функций и внедрение зависимостей, а также включает пакет molten.contrib
, что содержит различные функциональные возможности, которые обычно требуются API на практике.
Это могут быть файлы конфигурации, метрики Prometheus, ID запросоы, сессии, SQLAlchemy, шаблоны, вебсокеты и многое другое.
Установка Molten
1 |
pip install molten |
Пример Hello world на Molten
1 2 3 4 5 6 |
from molten import App, Route def hello(name: str) -> str: return f"Hello {name}!" app = App(routes=[Route("/hello/{name}", hello)]) |
Веб-фреймворк Python Japronto
Japronto является быстрым, масштабируемым, асинхронным HTTP инструментарием для Python 3.5+, интегрированным с конвейерным HTTP-сервером, базирующимся на uvloop
и picohttpparser
.
Он предназначен тех, кому важна скорость, внимательность к деталям и новые разработки. На данный момент нет особых новостей касательно разработки Japronto, однако о том, что проект заброшен, создатели также не сообщали.
Установка Japronto
1 |
pip install japronto |
Пример Hello world на Japronto
1 2 3 4 5 6 7 8 |
from japronto import Application def hello(request): return request.Response(text='Hello world!') app = Application() app.router.add_route('/', hello) app.run(debug=True) |
Микро-фреймворк Python Klein
Klein — это микро-фреймворк для разработки веб-сервисов на Python. Klein отличается минималистичным API, что похож на Bottle и Flask. Стоит отметить, что он зависим от дополнительных инструментов вне стандартной библиотеки.
Причина в том, что Klein создан на широко используемых и хорошо протестированных компонентах, таких как Werkzeug и Twisted.
Установка Klein
1 |
pip install klein |
Пример Hello world на Klein
1 2 3 4 5 6 7 |
from klein import run, route @route('/') def home(request): return 'Hello, world!' run("localhost", 8080) |
Микро веб-фреймворк Python Quart
Quart является Python ASGI веб-микрофреймворком. Он предназначен для того чтобы предоставить самый простой способ использования асинхронных функций в веб-контексте, особенно с уже существующими приложениями Flask.
Это становится возможным, благодаря тому, что Quart API является супер-набором для API Flask. Quart позиционирует себя в качестве полноценного веб-микрофреймворком. Он поддерживает HTTP/1.1, HTTP/2 и вебсокеты.
Установка Quart
1 |
pip install quart |
Пример Hello world на Quart
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
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() |
Web-Framework Python BlackSheep
BlackShepp является асинхронным веб-фреймворком для создания веб-приложений Python, которые не блокируются и в основе которых лежат события. Вдохновлен Flask и ASP.NET Core.
BlackSheep поддерживает автоматическую связку значений с обработчиками запросов, задействуя аннотации типа или конвенции. Он также поддерживает внедрение зависимостей и имплементацию стратегий для обработки аутентификации и авторизации, используя внешние библиотеки.
Установка BlackSheep
1 |
pip install blacksheep |
Пример Hello world на BlackSheep
1 2 3 4 5 6 7 8 9 |
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()}') |
Web-Framework Python Cyclone
Cyclone является веб-фреймворком, который реализует Tornado API в виде протокола Twisted. Идея в соединении элегантного и ясного Tornado API с циклами событий Twisted, что позволяет использовать огромное количество поддерживаемых протоколов.
Эта комбинация обеспечивает основу для создания гибридных серверов, способных очень эффективно обрабатывать HTTP, а также одновременно использовать электронную почту, ssh, sip, irc, причем одновременно.
Установка Cyclone
1 |
pip install cyclone |
Являюсь администратором нескольких порталов по обучению языков программирования Python, Golang и Kotlin. В составе небольшой команды единомышленников, мы занимаемся популяризацией языков программирования на русскоязычную аудиторию. Большая часть статей была адаптирована нами на русский язык и распространяется бесплатно.
E-mail: vasile.buldumac@ati.utm.md
Образование
Universitatea Tehnică a Moldovei (utm.md)
- 2014 — 2018 Технический Университет Молдовы, ИТ-Инженер. Тема дипломной работы «Автоматизация покупки и продажи криптовалюты используя технический анализ»
- 2018 — 2020 Технический Университет Молдовы, Магистр, Магистерская диссертация «Идентификация человека в киберпространстве по фотографии лица»