為什么選擇學習 Sanic 框架

      網友投稿 738 2022-05-30

      Web Server 和框架

      Sanic 稱自己既是一個網絡框架,也是一個網絡服務器。這是什么意思?更重要的是,為什么這很重要?

      那么什么是 Web Server?

      Web Server

      Web服務器是一種軟件,旨在通過 HTTP 協議傳遞文檔和數據。它的功能是接受傳入的 HTTP 請求,對消息進行解碼以了解請求試圖完成的任務,并提供適當的響應。Web 服務器的語言是 HTTP 協議。

      我們可以設置一個簡單的Sanic服務器,然后從 curl 發出請求,并查看消息。

      創建一個server.py 文件,寫入如下代碼:

      from sanic import Sanic, text, Request app = Sanic(__name__) @app.post("/") async def handler(request: Request): message = ( request.head + b'\n\n' + request.body ).decode("utf-8") print(message) return text("Done") app.run(port=8088, debug=True)

      為什么選擇學習 Sanic 框架

      執行sanic server.app ,運行該服務器

      打開另一個終端,運行curl localhost:8088 -d '{"foo": "bar"}' 語句,能看到如下輸出:

      然后回到另一個終端,能看到 HTTP 請求消息,如下內容:

      POST / HTTP/1.1 Host: localhost:8088 User-Agent: curl/7.68.0 Accept: */* Content-Length: 14 Content-Type: application/x-www-form-urlencoded {"foo": "bar"}

      第一行包含 HTTP 方法、路徑和使用的 HTTP 協議

      接下來是 HTTP 頭的列表,每行一個,格式為key:value

      最后是 HTTP 正文,前面有一個空行。HTTP 響應非常相似:

      HTTP/1.1 200 OK content-length: 4 connection: keep-alive content-type: text/plain; charset=utf-8 Done

      第一行包含 HTTP 協議,然后是 HTTP 狀態和狀態描述

      接下來是 HTTP 頭的列表,每行一個,格式為 key:value

      最后是HTTP正文(如果有),前面有一個空行。

      雖然這是 Web 服務器的語言,但編寫所有這些內容非常麻煩。因此,Web 瀏覽器和 HTTP 客戶端庫等工具被創建來為我們構建和解析這些消息。

      Web 框架

      當然,我們可以用 Python 編寫一個程序,接收這些原始 HTTP 消息,對它們進行解碼,然后返回一個適當的 HTTP 響應消息。然而,這將需要大量的文件,難以擴展,并且容易出錯。

      有一些工具可以幫我們做到這一點:Web框架。Web 框架的工作是構建 HTTP 消息并適當地處理請求。許多框架通過提供便利和實用程序來進一步簡化流程。

      Python 生態系統中有許多 Web 框架在不同程度上完成了這項工作。有些提供了大量的功能,有些則非常稀少。有些非常嚴格,有些則更加開放。Sanic 只在不妨礙開發人員的情況下,才嘗試保持功能豐富的連續性。

      Sanic提供的一個功能是,它既是一個 Web 框架,也是一個 Web 服務器。Web 框架做的就是有一個服務器調用一個輸入函數,向其傳遞有關請求的信息,并得到響應。

      async/await 風格的協程處理程序的項目,絕大多數都需要運行一個ASGI服務器。它遵循一個類似的模式:一個ASGI就緒的服務器調用一個ASGI就緒的框架。

      這兩個組件使用一個特定的協議相互操作。目前有三種流行的ASGI服務器:uvicorn、hypercorn和daphne。

      Sanic

      正因為 Sanic 誕生于 ASGI 之前的時代,它需要自己的服務器。隨著時間的推移,這已經成為它最大的資產之一,并且在很大程度上是它勝過其他大多數 Python 框架的原因。Sanic 服務器的開發非常注重性能和請求/響應周期的最小化。然而,近年來 Sanic 也采用了 ASGI 接口,使其能夠由 ASGI 網絡服務器運行。

      Sanic 具備開箱即用的功能,它可以用于編寫,部署和擴展生產級 Web 應用程序。

      為什么選擇 Sanic 框架學習呢?官方給出了 6 個原因:

      特征(Features)

      內置極速 web server

      生產準備就緒

      極高的拓展性

      支持 ASGI

      簡單直觀的 API 設計

      社區保障

      總結

      Sanic 會被看作是為 Flask 應用帶來 async/await 風格編程的一種嘗試。雖然這可能是最初的概念驗證的一個公平的觀點,但 Sanic 在一個非常不同的道路上發展,其目標和影響是成為一個為性能應用設計的強大工具。

      因此,Sanic 通常被那些希望建立一個豐富環境的開發者和團隊所使用,以解決他們的應用需求所要求的獨特的、明顯的設計模式。該項目的意圖是消除構建網絡服務器的困難或繁瑣部分,并提供工具來創建高性能和可擴展的網絡應用。

      HTTP web前端

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:HTTP_REFERER的用法及偽造
      下一篇:VIM命令模式與輸入模式切換
      相關文章
      久久国产亚洲观看| 国产∨亚洲V天堂无码久久久 | 亚洲AV成人片色在线观看| 中文亚洲成a人片在线观看| 亚洲国产精品无码久久青草| 亚洲第一网站男人都懂| 亚洲福利视频一区二区| 国产精品亚洲精品日韩动图 | 亚洲AV综合色区无码一二三区| 亚洲中文精品久久久久久不卡| 亚洲1234区乱码| 亚洲乱码一二三四区国产| 亚洲乱码无限2021芒果| 亚洲а∨天堂久久精品9966| 亚洲精品无码专区在线播放| 亚洲av无码兔费综合| 色欲色欲天天天www亚洲伊| 亚洲AV蜜桃永久无码精品| 亚洲精品黄色视频在线观看免费资源| 亚洲国产精品综合久久一线| 老司机亚洲精品影视www| 国产亚洲精品成人AA片新蒲金| 亚洲熟妇av一区二区三区| 亚洲国产精品无码久久一线 | 国产精品亚洲av色欲三区| 午夜亚洲av永久无码精品| 国产精品亚洲精品爽爽| 国产成人亚洲精品影院| 亚洲色无码一区二区三区| 亚洲va久久久噜噜噜久久狠狠| 亚洲精品国产成人99久久| 亚洲精品国产专区91在线| 亚洲乱码日产精品BD在线观看| 亚洲日韩中文字幕一区| 日韩色视频一区二区三区亚洲| 亚洲日韩国产一区二区三区| 亚洲精品午夜无码电影网| 亚洲小视频在线观看| 亚洲一区二区三区不卡在线播放| 亚洲天然素人无码专区| 亚洲成a人无码av波多野按摩|