日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

https://geekflare.com/Python/ target=_blank class=infotextkey>Python-asynchronous-web-frameworks/

大家好,歡迎來到 Crossin的編程教室 !

Python在3.4引入了 asyncio 庫,3.6新增了關鍵字asyncawait,此后,異步框架迅速發展了起來,性能上能和Node.js比肩,除非是CPU密集型任務,否則沒有理由不使用異步框架。

如果你是Web開發者,現在異步Web框架上有了更多選擇!

1、Tornado

Tornado 根本不是什么新框架,它最初是由FriendFeed(后被Facebook收購)在2009年發布。從一開始就提供有異步編程的功能。

Tornado 不僅僅是Web框架,同時它內置了很多異步模塊,可用于自己構建異步應用。這些模塊包括:

協同程序和其他原語(tornado.gen,tornado.locks,tornado.queues等)

網絡模塊(tornado.ioloop,tornado.IOStream)

異步服務器和客戶端(tornado.httpserver,httpclient,等)


通過這些模塊,Tornado 構建了自己的異步Web框架模塊。

import tornado.ioloop
import tornado.web

class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write("Hello, world")

def make_App():
return tornado.web.Application([
(r"/", MainHandler),
])

if __name__ == "__main__":
app = make_app()
app.listen(8888)
tornado.ioloop.IOLoop.current().start()

Tornado在Python社區中擁有很多追隨者,并且經驗豐富的架構師使用它們來構建功能強大的系統。這個框架長期以來一直在解決并發問題,但是由于它不支持WSGI標準(大部分Python庫仍在同步中),因此尚未成為主流。

國內據說知乎是基于Torando構建的。


2、 Snaic

Sanic是一個誕生有3年的框架:它只支持3.6以上Python版本,支持通用的async / await語法,開箱即用,因此你無需閱讀大量文檔就可以寫出你的一個HTTP 處理器。

除了async關鍵字之外,語法上和 flask 基于沒差別。

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可以說是Python世界中最流行和最受歡迎的異步框架。它具有你項目中需要的所有功能:路由,中間件,Cookie,版本控制,藍圖,基于類的視圖,靜態文件,流,sockets,此外你還可以集成模板,數據庫驅動,文件I / O,隊列等等。

3、Vibora

Vibora和Sanic非常像,致力于成為最快的Python Web服務器。他們網站首頁有一個框架比較圖:


Vibora聲稱比其它框架快幾倍,比競爭對手Sanic還快兩倍多。當然,這個基準測試要持懷疑態度。

盡管在語法和功能上,Vibora可以與Sanic媲美但我認為Sanic更加成熟,因為它已經存在了很長一段時間并且具有更大的社區。

from vibora import Vibora, JsonResponse

app = Vibora()

@app.route('/')
async def home():
return JsonResponse({'hello': 'world'})

if __name__ == '__main__':
app.run(host="0.0.0.0", port=8000)

4、Quart

如果您喜歡Flask,但又要支持異步, 那么Quart你一定會喜歡

Quart符合ASGI標準,該標準是WSGI標準的后繼產品,并提供異步支持。Quart不僅與Flask相似,而且與Flask API兼容!該框架的作者希望保留了Flask的風格,只是向其中添加異步、WebSocket和HTTP 2支持。因此,你可以從Flask文檔中學習Quart的用法,只需要記住Quart中的函數是異步的就行。

from quart import Quart

app = Quart(__name__)

@app.route('/')
async def hello():
return 'hello'

app.run()

幾乎完全像Flask

由于Quart是從Flask中演進過來的,因此Flask的所有功能均可用:路由,中間件,會話,模板,藍圖等。實際上,你甚至可以直接在Quart內部使用Flask的擴展插件。不過,有一個問題是它僅支持Python 3.7+。

5、FastAPI

FastAPI似乎是異步 Python 框架里功能、文檔最豐富的框架。

該框架的作者深入研究了其他幾個框架,從諸如Django到Sanic之類的現代框架,以及NestJS(Node.js,Typescript Web框架)。

語法甚至可以說它比我們遇到的其他框架更有趣:

rom fastapi import FastAPI

app = FastAPI()

@app.get("/users/me")
async def read_user_me():
return {"user_id": "the current user"}

@app.get("/users/{user_id}")
async def read_user(user_id: str):
return {"user_id": user_id}

FastAPI勝過其他框架的殺手锏,自動生成API文檔:

編寫API接口后,你就可以使用符合標準的UI如SwaggerUI,ReDoc等來使用API。

那性能呢?FastAPI是基于Starlette庫構建的,其性能可與Node相匹配,在某些情況下甚至可以與Go相匹配。總而言之,我真的有一種感覺,FastAPI將成為Python的頂級異步框架。

總結

如今,Python異步生態正在發生很多事情。出現了新的框架,舊的框架正在重寫,很多庫開始支持異步行為。對于Web框架,Python已準備就緒,可提供出色的性能。如果很長一段時間你在考慮遷移到Node或者go,那現在不需要了。

今日討論:你目前在用什么框架?

如果文章對你有幫助,歡迎轉發/點贊~

作者:劉志軍

來源:Python之禪

分享到:
標簽:框架
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定