1. 程式人生 > >WSGI,uwsgi, uWSGI詳解

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

的方式,用nginx的協議將請求封裝好,傳送給應用伺服器,比如uWSGI,應用伺服器會實現WSGI的服務端、程序管理以及對application的呼叫。

uwsgi

它是一個二進位制協議,可以攜帶任何型別的資料。一個uwsgi分組的頭4個位元組描述了這個分組包含的資料型別。
uwsgi是一種線路協議而不是通訊協議,在此常用於在uWSGI伺服器與其他網路伺服器的資料通訊;

uWSGI

uWSGI是一種web伺服器,是實現了uwsgi和WSGI兩種協議的Web伺服器


WSGI,uwsgi, uWSGI: 實現過程圖解

在這裡插入圖片描述