Django, Flask? 你有更多的选择。11个新的Python web开发框架

从RESTful API到可以为数百万用户提供服务的成熟Web应用程序,Python一直是构建Web服务的语言。如果您一直涉足这一领域,那么您可能已经使用了一些最受欢迎的Web框架-Django,Flask,Falcon,Tornado,CherryPy等。

但是,在过去的几年中,有很多新的选择出现。这些新框架采用了一些全新的方法,重点关注API的性能和表达能力。这是11个新的Web框架的介绍,您可以在下一个项目中考虑这些框架。

1. Sanic

Django, Flask? 你有更多的选择。11个新的Python web开发框架

Sanic定位为Web服务器和Web框架。它允许使用Python 3.5中添加的async / await语法,这使您的代码无阻塞而且快速。Sanic利用uvloop和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)

项目地址: https://github.com/huge-success/sanic

2.Starlette

Django, Flask? 你有更多的选择。11个新的Python web开发框架

Starlette是一种轻量级的ASGI框架,是构建高性能异步服务的理想之选,旨在用作完整框架或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)

项目地址: https://github.com/encode/starlette

3.Masonite

Django, Flask? 你有更多的选择。11个新的Python web开发框架

Masonite是一个以开发人员为中心的Python Web框架,致力于开发包含开发人员工具的实际功能,该工具具有许多现成的功能以及极其可扩展的体系结构。它具有一个简单而富有表现力的路由引擎,一个简单的迁移(migration)系统以及一个称为Orator的出色Active Record风格的ORM。

安装

pip install masonite-cli

项目地址: https://github.com/MasoniteFramework/masonite

4. FastAPI

Django, Flask? 你有更多的选择。11个新的Python web开发框架

FastAPI是一个现代的高性能Web框架,用于基于标准Python type hints,使用Python 3.6+构建的API。它建立在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"}

项目地址: https://github.com/tiangolo/fastapi

5.Responder

Django, Flask? 你有更多的选择。11个新的Python web开发框架

Responder同样基于Starlette,它的主要概念是将Flask和Falcon结合的优点整合到一个框架中。它具有内置的生产静态文件服务器,自动压缩响应,本地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()

项目地址: https://github.com/taoufik07/responder

6.Molten

Django, Flask? 你有更多的选择。11个新的Python web开发框架

Molten是用于使用Python构建的HTTP API,它是很小的,可扩展,快速且高效的框架。Molten可以根据预定义的模式自动验证请求,确保您的处理程序仅在给出有效输入后才运行。Molten还支持基于功能的中间件,依赖项注入,并包括melt.contrib程序包,其中包含现实世界中API通常所需的各种功能,例如配置文件,Prometheus指标,请求ID,会话,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)])

项目地址: https://github.com/Bogdanp/molten

7.Japronto

Japronto是一个快速的,可扩展的,异步的Python 3.5+ HTTP工具包,与基于uvloop和picohttpparser的流水线HTTP服务器集成在一起。目前没有新的项目开发,但也没有被放弃。

安装

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)

项目地址: https://github.com/squeaky-pl/japronto

8.Klein

Klein是一个小型框架,用于使用Python开发可用于生产环境的Web服务。它是“微型”的,因为它具有类似于Bottle和Flask的非常小的API。它也不是“微型”的,因为它依赖于标准库之外的东西。这主要是因为它基于Werkzeug和Twisted等广泛使用且经过良好测试的组件。

安装

pip install klein

Hello world 的例子

from klein import run, route

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

run("localhost", 8080)

项目地址: https://github.com/twisted/klein

9.Quart

Django, Flask? 你有更多的选择。11个新的Python web开发框架

Quart是Python ASGI网络微框架。它旨在提供最简单的方法来在Web上下文中使用asyncio功能,尤其是在现有的Flask应用程序中。这是可行的,因为Quart API是Flask API的超集。Quart旨在成为一个完整的Web微框架,因为它支持HTTP / 1.1,HTTP / 2和websocket。

安装

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

项目地址: https://github.com/pgjones/quart

10. BlackSheep

Django, Flask? 你有更多的选择。11个新的Python web开发框架

BlackSheep是一个异步Web框架,用于构建基于事件的非阻塞Python Web应用程序。它受Flask和ASP.NET Core的启发。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()}')

项目地址: https://github.com/RobertoPrevato/BlackSheep

11.Cyclone

Cyclone是一个Web服务器框架,将Tornado API实现为Twisted协议。这个想法是将Tornado优雅而简单的API桥接到Twisted的Event-Loop,从而实现大量受支持的协议。这种结合为构建混合服务器提供了基础,该服务器能够非常有效地处理HTTP,同时还可以同时服务或使用电子邮件,ssh,sip,irc等。

安装

pip install cyclone

项目地址: https://github.com/fiorix/cyclone

如果发现任何不正确的地方,或者想分享有关上述主题的更多信息,欢迎反馈。


分享到:


相關文章: