WSGI,uwsgi, uWSGI詳解
WSGI
全稱:Web Server Gateway Interface 翻譯過來就是Web伺服器閘道器介面;WSGI是一個規範協議,定義了Web伺服器如何與Python應用程式進行互動,使得使用Python寫的Web應用程式可以和Web伺服器對接起來。
在WSGI中定義了兩個角色,Web伺服器端稱為server或者gateway,應用程式端稱為application或者framework(因為WSGI的應用程式端的規範一般都是由具體的框架來實現的)。我們下面統一使用server和application這兩個術語。
server端會先收到使用者的請求,然後會根據規範的要求呼叫application端,如下圖所示:
呼叫的結果會被封裝成HTTP響應後再發送給客戶端。
要使用WSGI,需要分別實現server角色和application角色。
Application端的實現一般是由Python的各種框架來實現的,比如Django, web.py等,一般開發者不需要關心WSGI的實現,框架會會提供介面讓開發者獲取HTTP請求的內容以及傳送HTTP響應;
Server端的實現會比較複雜一點,這個主要是因為軟體架構的原因。一般常用的Web伺服器,如Apache和nginx,都不會內建WSGI的支援,而是通過擴充套件來完成。比如Apache伺服器,會通過擴充套件模組mod_wsgi來支援WSGI。Apache和mod_wsgi之間通過程式內部介面傳遞資訊,mod_wsgi會實現WSGI的server端、程序管理以及對application的呼叫。Nginx上一般是用proxy
uwsgi
它是一個二進位制協議,可以攜帶任何型別的資料。一個uwsgi分組的頭4個位元組描述了這個分組包含的資料型別。
uwsgi是一種線路協議而不是通訊協議,在此常用於在uWSGI伺服器與其他網路伺服器的資料通訊;
uWSGI
uWSGI是一種web伺服器,是實現了uwsgi和WSGI兩種協議的Web伺服器
WSGI,uwsgi, uWSGI: 實現過程圖解