淺析Python 中的 WSGI 介面和 WSGI 服務的執行
阿新 • • 發佈:2020-12-10
HTTP格式
HTTP GET請求的格式:
GET /path HTTP/1.1 Header1: Value1 Header2: Value2 Header3: Value3
每個Header一行一個,換行符是\r\n
。
HTTP POST請求的格式:
POST /path HTTP/1.1 Header1: Value1 Header2: Value2 Header3: Value3 body data goes here...
當遇到連續兩個\r\n時,Header部分結束,後面的資料全部是Body。
HTTP響應的格式:
200 OK Header1: Value1 Header2: Value2 Header3: Value3 body data goes here...
HTTP響應如果包含body,也是通過\r\n\r\n
來分隔的。需注意,Body的資料型別由Content-Type
頭來確定,如果是網頁,Body就是文字,如果是圖片,Body就是圖片的二進位制資料。
當存在Content-Encoding
時,Body資料是被壓縮的,最常見的壓縮方式是gzip。
WSGI介面
WSGI:Web Server Gateway Interface。
WSGI介面定義非常簡單,只需要實現一個函式,就可以響應HTTP請求。
# hello.py def application(environ,start_response): start_response('200 OK',[('Content-Type','text/html')]) body = '<h1>Hello,%s!</h1>' % (environ['PATH_INFO'][1:] or 'web') return [body.encode('utf-8')]
函式接收兩個引數:
- environ:一個包含所有HTTP請求資訊的
dict
物件; - start_response:一個傳送HTTP響應的函式。
執行WSGI服務
Python內建了一個WSGI伺服器,這個模組叫wsgiref,它是用純Python編寫的WSGI伺服器的參考實現。
# server.py from wsgiref.simple_server import make_server 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
即可啟動WSGI伺服器。
啟動成功後,開啟瀏覽器,輸入http://localhost:8000/
,即可看到結果。
按Ctrl+C
可以終止伺服器。
以上就是淺析Python 中的 WSGI 介面和 WSGI 服務的執行的詳細內容,更多關於Python WSGI介面和WSGI服務的資料請關注我們其它相關文章!