WSGIhtml
參考link:https://jingtyu.gitbooks.io/learning-openstack/content/351-usgi.html(本人的gitbook)python
wsgi: Web服務器網關接口(Python Web Server Gateway Interface
,縮寫爲WSGI
)CGI(common gateway unterface)git
工做原理:web
webob:WebOb是一個用於對WSGI request環境進行包裝(也就是變得易用)以及用於建立WSGI response的一個包。數據庫
特色:一是兼容性好,二是使用簡單。服務器
pecan:Pecan專一於HTTP自己,提供object-dispatch方式路由的超輕量級的Python Web框架,沒有支持一些額外的功能,session
好比session或是數據庫 。框架
wsme:(Web Service Made Easy)WSME會自動幫你檢查HTTP請求和響應中的數據是否符合預先設定好的要求。WSME的主要方式是經過裝飾器來控制controller方法的輸入和輸出。WSME中主要使用兩個控制器:函數
@signature: 這個裝飾器用來描述一個函數的輸入和輸出。工具
@wsexpose: 這個裝飾器包含@signature的功能,同時會把函數的路由信息暴露給Web框架,效果就像Pecan的expose裝飾器。
paste:Python paste是一個WSGI工具包,paste 是python的一個module,經過paste, 你能夠把wsgi的模塊寫入ini風格的配置文
件,靈活部署。
routes:Rest即Representational State Transfer
,中文你們翻譯成表述性狀態轉移。在OpenStack中的API Daemon都會有一個Router類,來構建資源與URL直接的映射關係,完成從接收到URL請求而後映射到具體的函數上執行的整個過程。
CGI
CGI是比較原始的開發動態網站的方式。你能夠想象一下,一個網站的動態內容確定是程序生成的,光是靜態的html頁面沒法達到這個效果。那麼,這個程序就須要接受客戶端的請求,而後進行相應處理,再返回給客戶端,客戶端和服務端的通訊固然是經過HTTP協議。
而後咱們會發現,這個程序在處理客戶端請求的時候,大部分時候會進行不少重複的工做,好比說HTTP請求的解析。也就是說,你的程序須要解析HTTP請求,個人程序也須要解析。
因而爲了DRY原則,Web服務器誕生了。(如下所說的都是CGI的工做模式)
因而Web服務器能夠解析這個HTTP請求,而後把這個請求的各類參數寫進進程的環境變量,好比
REQUEST_METHOD,PATH_INFO之類的。以後呢,服務器會調用相應的程序來處理這個請求,這個程序也就是咱們所要寫的CGI程序了。它會負責生成動態內容,而後返回給服務器,再由服務器轉交給客戶端。服務器和CGI程序之間通訊,通常是經過進程的環境變量和管道。
這樣作雖然很清晰,但缺點就是每次有請求,服務器都會fork and exec,每次都會有一個新的進程產生,開銷仍是比較大的。
緣由在與CGI程序是一個獨立的程序,它是能夠獨立運行的(在提供HTTP請求的狀況下),它能夠用幾乎全部語言來寫,包括perl,c,lua,python等等。因此對於一個程序,服務器只能以fork and exec的方式來調用它了。
CGI,SWGI區別