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

如果發現任何不正確的地方,或者想分享有關上述主題的更多信息,歡迎反饋。


分享到:


相關文章: