python WSGI框架詳解


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

2.什么是WSGI,為什么需要WSGI
上面的web應用過程,如果由我們自己來實現是復雜的,接收HTTP請求,解析HTTP請求,響應HTTP請求等。
通常這些操作都由WSGI服務器來完成,WSGI(Web Server Gateway Interface)定義了WSGI服務器執行的接口,我們只需要編寫服務WSGI規范的接口,然后由WSGI服務器來執行,就可以了。

3.WSGI接口編寫示例

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接口只負責業務邏輯。

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

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

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/,就可以看到結果了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM