<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          5個頂級異步Python框架

          共 3108字,需瀏覽 7分鐘

           ·

          2022-02-12 22:19

          參考鏈接:

          https://geekflare.com/python-asynchronous-web-frameworks/



          大家好,歡迎來到 Crossin的編程教室 !
          Python在3.4引入了 asyncio 庫,3.6新增了關(guān)鍵字 asyncawait,此后,異步框架迅速發(fā)展了起來,性能上能和Node.js比肩,除非是CPU密集型任務(wù),否則沒有理由不使用異步框架。

          如果你是Web開發(fā)者,現(xiàn)在異步Web框架上有了更多選擇!

          1、Tornado

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

          Tornado 不僅僅是Web框架,同時它內(nèi)置了很多異步模塊,可用于自己構(gòu)建異步應(yīng)用。這些模塊包括:
          • 協(xié)同程序和其他原語(tornado.gen,tornado.locks,tornado.queues等)
          • 網(wǎng)絡(luò)模塊(tornado.ioloop,tornado.iostream)
          • 異步服務(wù)器和客戶端(tornado.httpserver,httpclient,等)

          通過這些模塊,Tornado 構(gòu)建了自己的異步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社區(qū)中擁有很多追隨者,并且經(jīng)驗豐富的架構(gòu)師使用它們來構(gòu)建功能強大的系統(tǒng)。這個框架長期以來一直在解決并發(fā)問題,但是由于它不支持WSGI標準(大部分Python庫仍在同步中),因此尚未成為主流。
          國內(nèi)據(jù)說知乎是基于Torando構(gòu)建的。

          2、 Snaic

          Sanic是一個誕生有3年的框架:它只支持3.6以上Python版本,支持通用的async / await語法,開箱即用,因此你無需閱讀大量文檔就可以寫出你的一個HTTP 處理器。
          除了async關(guān)鍵字之外,語法上和 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,版本控制,藍圖,基于類的視圖,靜態(tài)文件,流,sockets,此外你還可以集成模板,數(shù)據(jù)庫驅(qū)動,文件I / O,隊列等等。

          3、Vibora

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

          Vibora聲稱比其它框架快幾倍,比競爭對手Sanic還快兩倍多。當然,這個基準測試要持懷疑態(tài)度。
          盡管在語法和功能上,Vibora可以與Sanic媲美但我認為Sanic更加成熟,因為它已經(jīng)存在了很長一段時間并且具有更大的社區(qū)。
          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標準的后繼產(chǎn)品,并提供異步支持。Quart不僅與Flask相似,而且與Flask API兼容!該框架的作者希望保留了Flask的風格,只是向其中添加異步、WebSocket和HTTP 2支持。因此,你可以從Flask文檔中學習Quart的用法,只需要記住Quart中的函數(shù)是異步的就行。
          from quart import Quart

          app = Quart(__name__)

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

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

          5、FastAPI

          FastAPI似乎是異步 Python 框架里功能、文檔最豐富的框架。
          該框架的作者深入研究了其他幾個框架,從諸如Django到Sanic之類的現(xiàn)代框架,以及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庫構(gòu)建的,其性能可與Node相匹配,在某些情況下甚至可以與Go相匹配。總而言之,我真的有一種感覺,F(xiàn)astAPI將成為Python的頂級異步框架。

          總結(jié)

          如今,Python異步生態(tài)正在發(fā)生很多事情。出現(xiàn)了新的框架,舊的框架正在重寫,很多庫開始支持異步行為。對于Web框架,Python已準備就緒,可提供出色的性能。如果很長一段時間你在考慮遷移到Node或者go,那現(xiàn)在不需要了。
          今日討論:你目前在用什么框架?
          如果文章對你有幫助,歡迎轉(zhuǎn)發(fā)/點贊/收藏~

          作者:劉志軍

          來源:Python之禪


          _往期文章推薦_

          人人都能學會的Python多線程指南




          如需了解付費精品課程教學答疑服務(wù)
          請在Crossin的編程教室內(nèi)回復(fù): 666

          瀏覽 51
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲无吗 | 国产乱伦网 | 黄色性爱视频网址 | 亚洲一级黄色视频 | 猫先生大连劲爆身材语文 |