Python – язык программирования, который довольно широко используется для создания веб-сервисов. С его помощью создавались программы, которыми сейчас пользуются миллионы людей. Скорее всего, вы уже создавали программы с помощью каких-то фреймворков для создания веб-приложений: Django, Flask, Falcon, Tornado, CherryPy. Но время не стоит на месте. За несколько последних лет появилось довольно большое количество интересных веб-фреймворков. В них не только используется свежий подход к решению проблем, но и они позволяют добиться значительно большей производительности.
Sanic
Этот инструмент одновременно позиционируется и как сервер, и как фреймворк для быстрого запуска приложения. Он задействует синтаксис async/await, который был добавлен в Python 3.5. Именно поэтому код, созданный с его помощью, работает быстро и без особых багов.
Также есть два необязательных пакета, которые используются для решения проблем с производительностью: uvloop, ujson.
Что нужно сделать для установки Sanic? Всего лишь ввести одну команду.
pip install sanic
А вот пример приложения «Hello World», созданного с помощью этого фреймворка.
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)
Starlette
Это простой фреймворк, который может использоваться для создания сервисов asyncio, которые будут характеризоваться высокой производительностью. Он может использоваться как в качестве самостоятельного фреймворка, так и инструментария ASGI. Поставляется в комплекте с большим набором инструментов, им поддерживается WebSockets, GraphQL, внутрипроцессоровые фоновые задачи, а также текстовый клиент, основанный на Requests Python.
Чтобы установить фреймворк, используется следующая команда.
pip install 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)
Masonite
Этот фреймворк сосредоточен на разработке приложений, который соответствует подходу «все включено». Это превосходный инструмент для разработчика, который хочет иметь все необходимое под рукой.
Преимущество Masonite в удобном механизме маршрутизации, который работает без дополнительных действий. Также людям нравится его стиль Active Record ORM, который называется Orator.
Чтобы установить Masonite, необходимо ввести следующую команду.
pip install masonite-cli
FastAPI
Это современный фреймворк для создания веб-приложений, который основан на Python 3.6+. В его основе лежит Starlette, и этот фреймворк является одним из самых быстрых на данный момент.
Он основывается на OpenAPI (Swagger – его прошлое название) и JSON Schema.
Установка этого фреймворка, точно так же, как и предыдущих, осуществляется через PIP.
pip install fastapi
А вот пример приложения Hello World, созданного на основе FastAPI.
from fastapi import FastAPI app = FastAPI() @app.get("/") def read_root(): return {"Hello": "World"}
Responder
Responder – это фреймворк, который также базируется на Starlette. При его создании ставилась задача совместить лучший функционал Flask и Falcon в одном фреймворке.
Он содержит встроенный статический сервер для продакшена, автоматические gzip-ответы, нативную поддержку GraphQL, а также встроенный клиент для тестов, который задействует модуль Requests.
Установка Responder производится следующим образом. Введите в терминал следующую команду.
pip install 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()
Molten
Это простой в использовании, но при этом функциональный фреймворк, с помощью которого создается HTTP API на Python. Molten автоматически проверяет запросы на предмет соответствия с предопределенными схемами. Таким образом гарантируется, что запуск обработчиков будет осуществляться исключительно при наличии правильного ввода.
Molten поддерживаются промежуточные программы благодаря функция и зависимостям. Также сюда входит пакет molten.contrib, в который входят разнообразные функциональные возможности, которые, как правило, требуются API.
Что может быть: Например, файлы конфигурации, метрики Prometheus, ID-запросы, сессии.
Molten устанавливается таким образом.
pip install 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)])
Japronto
Japtonto – это быстрый инструмент, который базируется на picohttpparser. К его положительным сторонам относится скорость, масштабируемость, асинхронность. Он может использоваться в Python 3.5 и старше.
Кому он может быть полезным? Прежде всего, тем людям, которым важна скорость, внимательность к деталям и новые разработки.
Правда, есть определенные непонятки по поводу статуса этого проекта. Никаких новостей по поводу его разработки не появлялось, но и данных о том, что он заброшен, также не было. Тем не менее, это функциональный инструмент, который обязательно стоит попробовать.
Как устанавливать Japronto? Для этого нужно ввести следующую команду.
pip install 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)
Klein
Klein – это небольшой фреймворк, предназначенный для создания веб-приложений на Python. Его особенность в том, что API минималистичный. В этом плане инструмент напоминает Bottle и Flask.
Следует отметить, что он зависим от дополнительного инструментария за пределами стандартной библиотеки. Все потому, что Klein создан на широко используемых и хорошо протестированных компонентах, таких как Werkzeug и Twisted. То есть, несмотря на то, что это кажется недостатком на первый взгляд, на самом деле, это преимущество данного фреймворка.
Чтобы установить Klein с помощью PIP, нужно ввести следующую команду.
pip install klein
А вот пример приложения Hello World, созданного на основе Klein.
from klein import run, route @route('/') def home(request): return 'Hello, world!' run("localhost", 8080)
Quart
Это микрофреймворк для разработки веб-приложений с использованием Python. Его особенность в том, что он предоставляет решения для использования асинхронных функций в веб-контексте. Причем этот фреймворк совместим с Flask, что открывает дополнительные возможности.
Благодаря чему это становится возможным? Прежде всего, за счет того, что Quart является набором для API Flask. Среди протоколов, поддерживаемых Quart, можно назвать HTTP/1.1, HTTP/2, а также вебсокеты.
Чтобы установить Quart, необходимо ввести следующую строку.
pip install quart
А вот пример приложения, созданного с помощью 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()
BlackSheep
BlackSheep – это типичный пример асинхронного фреймворка для разработки в интернете, который не блокируется и в основе которого находятся события. При его создании разработчики вдохновлялись Flask и ASP.NET Core.
BlackSheep – это инструмент, поддерживающий автоматическую связку значений с обработчиками запросов. При этом используются аннотации типа либо конвенции. Также поддерживается внедрение зависимостей и имплементация стратегий для обработки аутентификации и авторизации с использованием внешних библиотек.
Чтобы установить фреймворк, используется следующая строка кода:
pip install blacksheep
А вот пример программы, разработанной с использованием BlackSheep. По функционалу она стандартная: выводит строку «Hello World», точно так же, как и все приведенные ранее примеры.
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()}')
Cyclone
Cyclone – это фреймворк для разработки приложений в интернете, задействующий Tornado API в форме Twisted-протокола. Фреймворк создавался для соединения Twisted и Tornado API, что дает возможность использовать множество протоколов.
Такая комбинация гарантирует основу для создания гибридных серверов, которые могут невероятно быстро выполнять обработку HTTP-запросов, а также параллельно с этим использовать электронную почту, ssh, sip, irc, причем в один момент времени.
Чтобы установить этот фреймворк, необходимо, так же, как и в случае с предыдущими, использовать pip.
pip install cyclone
Выводы
Фреймворки – это эффективный тип инструментов для разработки ПО, позволяющий значительно увеличить скорость создания веб-приложений.