您好,登錄后才能下訂單哦!
本篇內容主要講解“python WSGI Application原理是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“python WSGI Application原理是什么”吧!
本篇文章所依賴的python
環境為:
WSGI
也稱之為web
服務器通用網關接口,全稱是web server gateway interface
。它定義了在python
中web
服務器與web
應用程序之間應該如何通信并且處理http
請求和響應的一個標準,注意,它只是一個協議,或者說是規范、標準,你也可以不按這個標準來,就像我們上一篇文章所寫的web
服務器那樣。
WSGI
也分為應用程序 和 服務器網關, 其中我們熟知的Flask
就是屬于應用程序,uWSGI
、wsgiref
屬于服務器網關。
個人感覺,WSGI
避免了造輪子,事情讓更擅長的人去做,寫服務器的,那就寫符合WSGI
規范的服務器就好,如果是寫應用端的,就寫符合WSGI
規范應用就好。不用在重復的寫輪子。
除此之外,WSGI
還能與傳統web
服務器對接,例如: nginx
、apache
等進行交互。
WSGI
中規定了其應用程序必須是一個可被調用的對象,通常來說,該對象是一個函數或者是一個類。 該對象必須接收2個參數,分別是environ
字典 和 start_response
函數,并且在對象結束前,應該調用start_response
函數。而函數應該傳參status
和headers
,其中status
應該定義響應狀態碼以及短語,headers
應該定義響應頭。
如果用代碼來闡述的話,應該是這樣來寫的:
def application(environ, start_response): status = '200 OK' headers = [('Content-type', 'text/plain')] start_response(status, headers) return [b'Hello, world!']
其中,application
是一個可迭代的對象,接受了2個參數,一個是environ
,其類型是字典,還是一個是start_response
,其類型是函數,在application
結束前,應該調用start_response
函數,并且傳入status
和headers
值。
我們昨天寫的代碼,將返回一個Hello, Destined Person.
,我們來看下,如果我們使用WSGI
標準來寫業務層,我們應該如何定義,并且如何調用WSGI
服務器。
上述,我們引入了一個符合WSGI
的服務器: wsgiref.simple_server
,我們僅需按照WSGI
的標準來編寫業務層,也就是上述的application
即可。我們在定義狀態碼的時候,估計將其設置為299 OK
,在設置請求頭的時候,設置了一個Server
為pdudo_web_sites
。
我們使用curl
請求一下服務器。
發現,哦,只要按照WSGI
規范來書寫,就可以很輕容的寫一個簡單的服務器。
到此,相信大家對“python WSGI Application原理是什么”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。