WSGI, UWSGI和ASGI
首先是介紹什么是WSGI, 接着是什么是UWSGI, 接着是ASGI
首先需要介紹的是CGI, CGI全稱(Common Gateway Interface, 通用網關接口),定義的是客戶端與Web服務器交流方式的一個程序.例如正常情況下客戶端發送來一個請求,CGI根據HTTP協議的將請求內容進行解析, 經過計算以后會將計算出來的內容封裝好,比如服務器返回一個html頁面,並且根據http協議構建返回的內容格式,涉及到的tcp連接、http原始請求和相應的格式這些, 都是由一個軟件來完成,完成以上的工作需要一個程序來完成, 便是CGI。
關於WSGI, 全稱Web服務器網關接口(Python Web Server Gateway Interface, WSGI),是為Python語言定義的Web服務器和Web應用程序或框架之間的一種簡單而通用的接口..簡單來說就是用來處理Web服務端與客戶端的通信問題的,(以django框架為例,使用的是wsgiref模塊,該模塊的功能)
以django框架為例,使用的是wsgiref模塊,該模塊的功能是: 監聽8000端口,把http請求根據WSGI協議將其轉換到applcation中的environ參數, 然后調用application函數. wsgiref會把application函數提供的響應頭設置轉換為http協議的響應頭,把application的返回(return)作為響應體,根據http協議,生成響應,返回給瀏覽器.
而UWSGI是一個Web服務器, 實現了WSGI協議,uwsgi,http等協議,
uwsgi是一個二進制協議, 能夠攜帶任何類型的信息,uwsgi數據包的前4個字節用於面描述信息的類型,該協議主要工作在tcp方式下,uwsgi是一種線路協議而不是通信協議,因此常用於在uWSGI服務器與其他網絡服務器的數據通信.
uwsgi 協議是一個 uWSGI服務器自有的協議,用於定義傳輸信息的類型
Nginx中HttpUwsgiModule的作用是與uWSGI服務器進行交換。WSGI是一種Web服務器網關接口。它是一個Web服務器(如nginx,uWSGI等服務器)與web應用(如用Flask框架寫的程序)通信的一種規范。
對於管理人員來說,uWSGI服務器提供了各種配置方法:命令行、環境變量、XML、INI、YAML、JSON、SQlite3數據庫和LDAP。
除此之外,它的設計完全模塊化,這意味着,可以使用不同的插件以便滿足不同的技術應用,從而實現兼容性.
關於ASGI
是異步網關協議接口,介於網絡服務和python飲用應用之間的標准接口,能夠處理多種通用的協議類型,包括http,http2和websocket.
關於WSGI和ASGI的區別是
WSGI是基於http協議模式開發的,不支持websocket,而ASGI的誕生解決了python中的WSGI不支持當前的web開發中的一些新的協議標准,同時ASGI支持原有模式和Websocket的擴展, 即ASGI是WSGI的擴展.
關於ASGI的應用案例, 下一篇博客我們再聊
更多精彩,可以關注樓主的公眾號,
最全面的django面試題總結: 回復django面試題即可獲取, pycharm供給激活壓縮包, 回復pycharm破解包即可獲取,破解步驟在我的這一篇博客(點我直達)已經破解百次, 屢試不爽.
以及其他樓主精心打造的原創文章,歡迎各位來訪.