日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
為什么選擇學(xué)習(xí) Sanic 框架

Web Server 和框架

Sanic 稱自己既是一個網(wǎng)絡(luò)框架,也是一個網(wǎng)絡(luò)服務(wù)器。這是什么意思?更重要的是,為什么這很重要?

十多年的立山網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。營銷型網(wǎng)站的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整立山建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)建站從事“立山網(wǎng)站設(shè)計”,“立山網(wǎng)站推廣”以來,每個客戶項目都認(rèn)真落實執(zhí)行。

那么什么是 Web Server?

Web Server

Web服務(wù)器是一種軟件,旨在通過 HTTP 協(xié)議傳遞文檔和數(shù)據(jù)。它的功能是接受傳入的 HTTP 請求,對消息進(jìn)行解碼以了解請求試圖完成的任務(wù),并提供適當(dāng)?shù)捻憫?yīng)。Web 服務(wù)器的語言是 HTTP 協(xié)議。

我們可以設(shè)置一個簡單的Sanic服務(wù)器,然后從 curl 發(fā)出請求,并查看消息。

  1. 創(chuàng)建一個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)
  1. 執(zhí)行sanic server.app ,運(yùn)行該服務(wù)器
  2. 打開另一個終端,運(yùn)行curl localhost:8088 -d '{"foo": "bar"}' 語句,能看到如下輸出:

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

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 協(xié)議
  • 接下來是 HTTP 頭的列表,每行一個,格式為key:value
  • 最后是 HTTP 正文,前面有一個空行。HTTP 響應(yīng)非常相似:
HTTP/1.1 200 OK
content-length: 4
connection: keep-alive
content-type: text/plain; charset=utf-8
Done
  • 第一行包含 HTTP 協(xié)議,然后是 HTTP 狀態(tài)和狀態(tài)描述
  • 接下來是 HTTP 頭的列表,每行一個,格式為 key:value
  • 最后是HTTP正文(如果有),前面有一個空行。

雖然這是 Web 服務(wù)器的語言,但編寫所有這些內(nèi)容非常麻煩。因此,Web 瀏覽器和 HTTP 客戶端庫等工具被創(chuàng)建來為我們構(gòu)建和解析這些消息。

Web 框架

當(dāng)然,我們可以用 Python 編寫一個程序,接收這些原始 HTTP 消息,對它們進(jìn)行解碼,然后返回一個適當(dāng)?shù)?HTTP 響應(yīng)消息。然而,這將需要大量的文件,難以擴(kuò)展,并且容易出錯。

有一些工具可以幫我們做到這一點:Web框架。Web 框架的工作是構(gòu)建 HTTP 消息并適當(dāng)?shù)靥幚碚埱?。許多框架通過提供便利和實用程序來進(jìn)一步簡化流程。

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

Sanic提供的一個功能是,它既是一個 Web 框架,也是一個 Web 服務(wù)器。Web 框架做的就是有一個服務(wù)器調(diào)用一個輸入函數(shù),向其傳遞有關(guān)請求的信息,并得到響應(yīng)。

async/await 風(fēng)格的協(xié)程處理程序的項目,絕大多數(shù)都需要運(yùn)行一個ASGI服務(wù)器。它遵循一個類似的模式:一個ASGI就緒的服務(wù)器調(diào)用一個ASGI就緒的框架。

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

Sanic

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

Sanic 具備開箱即用的功能,它可以用于編寫,部署和擴(kuò)展生產(chǎn)級 Web 應(yīng)用程序。

為什么選擇 Sanic 框架學(xué)習(xí)呢?官方給出了 6 個原因:

特征(Features)

  • 內(nèi)置極速 web server
  • 生產(chǎn)準(zhǔn)備就緒
  • 極高的拓展性
  • 支持 ASGI
  • 簡單直觀的 API 設(shè)計
  • 社區(qū)保障

總結(jié)

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

因此,Sanic 通常被那些希望建立一個豐富環(huán)境的開發(fā)者和團(tuán)隊所使用,以解決他們的應(yīng)用需求所要求的獨(dú)特的、明顯的設(shè)計模式。該項目的意圖是消除構(gòu)建網(wǎng)絡(luò)服務(wù)器的困難或繁瑣部分,并提供工具來創(chuàng)建高性能和可擴(kuò)展的網(wǎng)絡(luò)應(yīng)用。


文章標(biāo)題:為什么選擇學(xué)習(xí) Sanic 框架
地址分享:http://www.5511xx.com/article/cooddsj.html