天天看點

python web服務中的 WSGI CGI

WSGI

Web伺服器網關接口(Python Web Server Gateway Interface,縮寫為WSGI)是為Python語言定義的Web伺服器和Web應用程式或架構之間的一種簡單而通用的接口。自從WSGI被開發出來以後,許多其它語言中也出現了類似接口。WSGI是作為Web伺服器與Web應用程式或應用架構之間的一種低級别的接口,以提升可移植Web應用開發的共同點。WSGI是基于現存的CGI标準而設計的。

WSGI區分為兩個部份:一為“伺服器”或“網關”,另一為“應用程式”或“應用架構”。在處理一個WSGI請求時,伺服器會為應用程式提供環境資訊及一個回呼函數(Callback Function)。當應用程式完成處理請求後,透過前述的回呼函數,将結果回傳給伺服器。所謂的 WSGI 中間件同時實作了API的兩方,是以可以在WSGI服務和WSGI應用之間起調解作用:從WSGI伺服器的角度來說,中間件扮演應用程式,而從應用程式的角度來說,中間件扮演伺服器。“中間件”元件可以執行以下功能:

  1. 重寫環境變量後,根據目标URL,将請求消息路由到不同的應用對象。
  2. 允許在一個程序中同時運作多個應用程式或應用架構。
  3. 負載均衡和遠端處理,通過在網絡上轉發請求和響應消息。
  4. 進行内容後處理,例如應用XSLT樣式表。

以前,如何選擇合适的Web應用程式架構成為困擾Python初學者的一個問題,這是因為,一般而言,Web應用架構的選擇将限制可用的Web伺服器的選擇,反之亦然。那時的Python應用程式通常是為CGI,FastCGI,mod_python中的一個而設計,甚至是為特定Web伺服器的自定義的API接口而設計的。WSGI沒有官方的實作, 因為WSGI更像一個協定。隻要遵照這些協定,WSGI應用(Application)都可以在任何伺服器(Server)上運作, 反之亦然。WSGI就是Python的CGI包裝,相對于Fastcgi是PHP的CGI包裝。

WSGI将 web 元件分為三類: web伺服器,web中間件,web應用程式, wsgi基本處理模式為 : WSGI Server -> (WSGI Middleware)* -> WSGI Application 

python web服務中的 WSGI CGI