WSGI與ASGI的區別與聯絡

2021-10-05 21:49:34 字數 1709 閱讀 7219

區別cgi(common gateway inte***ce,通用閘道器介面),定義客戶端與web伺服器的交流方式的乙個程式,例如正常情況下客戶端傳送過來乙個請求,根據http協議web伺服器將請求的內容解析出來,經過處理會後,再將返回的內容封裝好。例如伺服器返回乙個html頁面,並且根據http協議構建返回內容的響應格式,涉及到tcp連線、http原始請求和相應格式都是由乙個軟體來完成,這個程式就是cgi。

那麼wsgi(python web server gateway inte***ce,wsgi)web伺服器閘道器介面,是為python語言定義的web伺服器和web應用程式或框架之間的一猴子那個簡單而且通用的介面,從語義上理解,wsgi為了解決web伺服器與客戶端之間的通訊問題而產生的。並且wsgi是基於現存的cgi標準而設計的,同樣是一種程式。

wsgi區分為兩部分,一種為伺服器或閘道器,另一種為應用程式或應用框架,所謂的wsgi中介軟體同時實現了api的兩方,即在wsgi伺服器和wsgi應用之間起調解作用:從wsgi伺服器的角度來說,中介軟體扮演應用程式,而從應用程式的角度來說,中介軟體扮演伺服器。中介軟體具有的功能有:

wsgi就是基於python的以cgi為標準做一些擴充套件。

wsgi 規範自誕生以來應用廣泛,在作為 python 框架和 web 服務的選擇上擁有非常好的靈活性。但,因為是針對 http 風格的請求響應模型做的設計,加上越來越多不遵循這種模式的協議逐漸成為 web 程式設計的標準之一,比如說,websocket。所以需要新的改變。

asgi 嘗試保持在乙個簡單的應用介面的前提下,提供允許資料能夠在任意時候、被任意應用程序傳送和接受的抽象。

它同樣描繪了乙個新的,相容 http 請求響應以及 websocket 資料幀的序列格式。允許這些協議能通過網路或本地 socket 進行傳輸,以及讓不同的協議被分配到不同的程序進行處理。

介於網路協議服務和 python 應用之間的標準介面,能夠處理多種通用協議型別,包括 http、http2 和 websocket。在 wsgi 上進行拓展,並最終取代它。在設計上還是包含了 wsgi 到 asgi 以及 asgi 到 wsgi 的轉換器,目的是為了使 http 協議的編寫更為容易。

sgi 由三個不同的元件構成:協議服務、頻道層(channel layer)、應用**。頻道層是這個實現中最重要的部分,它能同時對協議服務和應用提供介面。

乙個頻道層對協議服務、應用服務提供乙個send的可呼叫方法,該方法接受channel namemessage dict以及乙個receive_many方法作為引數。receive_many方法接受channel namelist作為引數,返回指定頻道的下一條可用的訊息。

所以,相較於在 wsgi 上,我們將協議服務直接指向應用,在 asgi 裡,我們將協議服務和應用同時指向乙個頻道層的例項。它的目的是讓應用服務和協議服務總是執行在不同的程序或者執行緒中,並通過頻道層進行通訊。

總體來說就是asgi對於wsgi原有的模式的支援和websocket的擴充套件,即asgi是wsgi的擴充套件。

python非同步的ASGI與Fast Api實現

目錄 asgi是非同步通訊服務規範。客戶端發起服務呼叫,但不等待結果。呼叫方立即繼續其工作,並不關心結果。如果呼叫方對結果感興趣,有一些機制可以讓其隨時被 方法返回結果。asgi嘗試保持在乙個簡單的應用介面的前提下,提供允許資料能夠在任意的時候 被任意應用程序傳送和接受的抽象。並且同樣描述了乙個新的...

p, amp p, p的區別與聯絡

學習c語言時,指標的學習是比較難的一部分,常常分辨不了 p p p 的區別。下面是摘抄別人的一段測試程式。以下是我的一小段測試用的程式 void test 應該注意的2點是 1.給指標只能傳位址,不能傳值.否則要做強制型別轉換.2.在做型別轉換和賦值時候,應該注意賦值的型別匹配.指標與陣列的區別 很...

DSSS OFDM FHSS的區別與聯絡

dsss直接序列擴頻抗干擾能力比較強,但是必須要求是可視就是說兩點間的路由上沒有任何的阻擋,或者阻擋的高度不能高於第一fresnel區,ofdm相對來說,在非視距的情況下可以進行資料傳輸。實際應用的時候,如果是點多多點的組網,ofdm之間的干擾更大些.dsss直接序列擴頻抗干擾能力比較強,發為了提高...