Рубрики
Без рубрики

Сравнение новых веб-фреймворков Python

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

Автор оригинала: Saif Sadiq.

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

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

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

1. Саник

Sanic дублирует себя как веб-сервер и веб-фреймворк, написанный для быстрой работы. Он позволяет использовать синтаксис async /| await , добавленный в Python 3.5, что делает ваш код неблокирующим и быстрым. Sanic использует uv loop и ujson для повышения производительности, но эти пакеты являются необязательными.

Установка

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)

Sanic на GitHub »

2. Старлетт

Starlette-это легкий OSGI фреймворк, который идеально подходит для создания высокопроизводительных asyncio сервисов, предназначенных для использования либо в качестве полного фреймворка, либо в качестве инструментария ASGI. С некоторыми включенными батарейками он поддерживает WebSockets, GraphQL, фоновые задачи в процессе работы и тестовый клиент, построенный на запросах .

Установка

pip install starlette

Пример Hello world

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)

Старлетт на GitHub »

3. Масонит

Masonite-это ориентированный на разработчиков веб-фреймворк Python, который стремится к реальному инструменту разработчика с большим количеством готовых функций и чрезвычайно расширяемой архитектурой. Он имеет простой и выразительный механизм маршрутизации, простую систему миграции, которая устраняет “магию” и скрещивание пальцев миграций, а также отличный активный стиль записи ORM под названием Orator.

Установка

pip install masonite-cli

Масонит на GitHub »

4. Быстрый API

Fast API-это современный, высокопроизводительный веб-фреймворк для создания API с Python 3.6+ на основе стандартных подсказок типа Python. Он построен поверх Starlette и является одним из самых быстрых доступных фреймворков Python. Основанный и полностью совместимый с открытыми стандартами API — OpenAPI (ранее известный как Swagger) и JSON Schema .

Установка

pip install fastapi

Пример Hello world

from fastapi import FastAPI app = FastAPI() @app.get("/")
def read_root(): return {"Hello": "World"}

FastAPI на GitHub »

Также основанная на Starlette, основная концепция Responder заключается в том, чтобы привнести тонкости, которые исходят как от Flask, так и от Falcon, и объединить их в единую структуру. Он имеет встроенный производственный статический файловый сервер, автоматические gzipped-ответы, собственную поддержку GraphQL и встроенный тестовый клиент, использующий запросы .

Установка

pip install responder

Пример Hello world

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()

Ответчик на GitHub »

6. Расплавленный

Molten-это минимальный, расширяемый, быстрый и продуктивный фреймворк для создания HTTP API с помощью Python. Molten может автоматически проверять запросы в соответствии с предопределенными схемами, гарантируя, что ваши обработчики будут работать только при наличии допустимых входных данных. Molten также поддерживает функциональное промежуточное программное обеспечение, инъекцию зависимостей, и включает в себя пакет molten.contrib , который содержит различные функциональные возможности, обычно требуемые API в реальном мире, такие как конфигурационные файлы, метрики Prometheus, идентификаторы запросов, сеансы, SQLAlchemy, шаблоны, websockets и многое другое.

Установка

pip install molten

Пример Hello world

from molten import App, Route
def hello(name: str) -> str:
    return f"Hello {name}!"
app = App(routes=[Route("/hello/{name}", hello)])

Расплавленный на GitHub »

7. Ja pronto

Ja pronto-это кричаще-быстрый, масштабируемый, асинхронный Python 3.5+ HTTP toolkit, интегрированный с конвейерным HTTP-сервером на основе uvloop и picohttpparser . Он ориентирован на энтузиастов скорости, людей, которые любят сантехнику и ранних последователей. В настоящее время не ведется разработка нового проекта, но и он не заброшен.

Установка

pip install japronto

Пример Hello world

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 »

8. Клейн

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

Установка

pip install klein

Пример Hello world

from klein import run, route
@route('/')
def home(request):
    return 'Hello, world!'

run("localhost", 8080)

Кляйн на GitHub »

9. Кварта

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

Установка

pip install quart

Пример Hello world

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()

Кварта на GitHub »

10. Черная овца

Black Sheep-это асинхронный веб-фреймворк для создания неблокирующих веб-приложений Python на основе событий. Он вдохновлен колбой и ASP.NET Ядро. BlackSheep поддерживает автоматическую привязку значений для обработчиков запросов, по типу аннотации или по соглашениям. Он также поддерживает внедрение зависимостей и реализует стратегии обработки аутентификации и авторизации с использованием внешних библиотек.

Установка

pip install 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()}')

BlackSheep на GitHub »

11. Циклон

Cyclone – это фреймворк веб – сервера, реализующий API Tornado в виде скрученного протокола. Идея состоит в том, чтобы соединить элегантный и простой API Tornado с Event-Loop Twisted, включив огромное количество поддерживаемых протоколов. Эта комбинация обеспечивает основу для создания гибридных серверов, способных очень эффективно обрабатывать HTTP, а также одновременно обслуживать или использовать электронную почту, ssh, sip, irc и т. Д.

Установка

pip install cyclone

Циклон на GitHub »