為了讓大家更好的對python中WSGI有更好的理解,我們先從最簡單的認識WSGI著手,然后介紹一下WSGI幾個經常使用到的接口,了解基本的用法和功能,最后,我們通過實例了解一下WSGI在實際項目中如何使用。
WSGI是什么?
wsgi是一個web組件的接口防范,wsgi將web組件分為三類:web服務器,web中間件,web應用程序
wsgi基本處理模式為:wsgi Server -> wsgi middleware -> wsgi application
WSGI,全稱 Web Server Gateway Interface,或者 Python Web Server Gateway Interface ,是為 Python 語言定義的 Web 服務器和 Web 應用程序或框架之間的一種簡單而通用的接口。自從 WSGI 被開發出來以后,許多其它語言中也出現了類似接口。
WSGI 的官方定義是,the Python Web Server Gateway Interface。從名字就可以看出來,這東西是一個Gateway,也就是網關。網關的作用就是在協議之間進行轉換。
WSGI 是作為 Web 服務器與 Web 應用程序或應用框架之間的一種低級別的接口,以提升可移植 Web 應用開發的共同點。WSGI 是基于現存的 CGI 標準而設計的。
很多框架都自帶了 WSGI server ,比如 Flask,webpy,Django、CherryPy等等。當然性能都不好,自帶的 web server 更多的是測試用途,發布時則使用生產環境的 WSGI server或者是聯合 nginx 做 uwsgi 。
也就是說,WSGI就像是一座橋梁,一邊連著web服務器,另一邊連著用戶的應用。但是呢,這個橋的功能很弱,有時候還需要別的橋來幫忙才能進行處理。
WSGI的作用
WSGI有兩方:“服務器”或“網關”一方,以及“應用程序”或“應用框架”一方。服務方調用應用方,提供環境信息,以及一個回調函數(提供給應用程序用來將消息頭傳遞給服務器方),并接收Web內容作為返回值。
所謂的 WSGI中間件同時實現了API的兩方,因此可以在WSGI服務和WSGI應用之間起調解作用:從WSGI服務器的角度來說,中間件扮演應用程序,而從應用程序的角度來說,中間件扮演服務器。“中間件”組件可以執行以下功能:
重寫環境變量后,根據目標URL,將請求消息路由到不同的應用對象。
允許在一個進程中同時運行多個應用程序或應用框架。
負載均衡和遠程處理,通過在網絡上轉發請求和響應消息。
進行內容后處理,例如應用XSLT樣式表。
wsgi server:
理解為一個符合wsgi規范的web server,接收request請求,封裝一系列環境變量,按照wsgi規范調用注冊的wsgi app,最后將response返回給客戶端。
工作流程:
1、服務器創建socket,監聽port,等待client 連接
2、當請求過來時,server解析client msg放到環境變量environ中,并調用綁定的handler來處理
3、handler解析這個http請求,將請求消息例如method、path等放到environ中
新聞熱點
疑難解答