WSGI的理解

1.web應用的本質
1)瀏覽器發送一個HTTP請求
2)服務器收到請求,生成一個HTML文檔
3)服務器把HTML文檔做爲HTTP響應的body發個瀏覽器
4)瀏覽器收到HTTP響應,從HTTP Body取出HTML文檔並顯示html

2.什麼是WSGI,爲何須要WSGI
上面的web應用過程,若是由咱們本身來實現是複雜的,接收HTTP請求,解析HTTP請求,響應HTTP請求等。
一般這些操做都由WSGI服務器來完成,WSGI(Web Server Gateway Interface)定義了WSGI服務器執行的接口,咱們只須要編寫服務WSGI規範的接口,而後由WSGI服務器來執行,就能夠了。python

3.WSGI接口編寫示例web

def application(environ,satrt_response):
    start_response('200 OK',[('Content-Type','text/html')])
    return '<h1>Hello,web!</h1>'

上面的application()函數就是符合WSGI標準的一個HTTP處理函數
參數說明:
environ:包含HTTP請求信息的dict對象
satrt_response:發送HTTP響應的函數
函數說明:
start_response('200 OK', [('Content-Type', 'text/html')])
發送HTTP響應的Header,Header只能發送一次,意思是start_response函數只能執行一次
'200 OK'是HTTP響應碼參數,[('Content-Type', 'text/html')]表示HTTP Header瀏覽器

函數的返回值return '<h1>Hello,web!</h1>'做爲HTTP響應body發送給服務器。服務器

接收HTTP請求,解析HTTP請求,發送HTTP請求等操做就交由WSGI服務器去完成,WSGI接口只負責業務邏輯。app

4.python WSGI服務器
python內置了一個WSGI服務器,這個模塊叫作wsgiref,不過這個模塊沒有考慮運行效率,只是爲了開發和測試使用。函數

5.python編寫運行WSGI web應用示例
1)編寫WSGI接口post

def application(environ,satrt_response):
    start_response('200 OK',[('Content-Type','text/html')])
    return '<h1>Hello,web!</h1>'

2)編寫server.py,啓動初始化WSGI服務器,加載application()函數測試

# server.py
# 從wsgiref模塊導入:
from wsgiref.simple_server import make_server
# 導入咱們本身編寫的application函數:
from hello import application

# 建立一個服務器,IP地址爲空,端口是8000,處理函數是application:
httpd = make_server('', 8000, application)
print "Serving HTTP on port 8000..."
# 開始監聽HTTP請求:
httpd.serve_forever()

運行:python server.py
打開瀏覽器,輸入http://localhost:8000/,就能夠看到結果了。spa

相關文章
相關標籤/搜索