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 »