淺析Python 中的 WSGI 接口和 WSGI 服務(wù)的運(yùn)行
HTTP格式HTTP GET請(qǐng)求的格式:
GET /path HTTP/1.1Header1: Value1Header2: Value2Header3: Value3
每個(gè)Header一行一個(gè),換行符是rn。
HTTP POST請(qǐng)求的格式:
POST /path HTTP/1.1Header1: Value1Header2: Value2Header3: Value3body data goes here...
當(dāng)遇到連續(xù)兩個(gè)rn時(shí),Header部分結(jié)束,后面的數(shù)據(jù)全部是Body。
HTTP響應(yīng)的格式:
200 OKHeader1: Value1Header2: Value2Header3: Value3body data goes here...
HTTP響應(yīng)如果包含body,也是通過rnrn來分隔的。需注意,Body的數(shù)據(jù)類型由Content-Type頭來確定,如果是網(wǎng)頁(yè),Body就是文本,如果是圖片,Body就是圖片的二進(jìn)制數(shù)據(jù)。
當(dāng)存在Content-Encoding時(shí),Body數(shù)據(jù)是被壓縮的,最常見的壓縮方式是gzip。
WSGI接口WSGI:Web Server Gateway Interface。
WSGI接口定義非常簡(jiǎn)單,只需要實(shí)現(xiàn)一個(gè)函數(shù),就可以響應(yīng)HTTP請(qǐng)求。
# hello.pydef 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’)]
函數(shù)接收兩個(gè)參數(shù):
environ:一個(gè)包含所有HTTP請(qǐng)求信息的dict對(duì)象; start_response:一個(gè)發(fā)送HTTP響應(yīng)的函數(shù)。運(yùn)行WSGI服務(wù)Python內(nèi)置了一個(gè)WSGI服務(wù)器,這個(gè)模塊叫wsgiref,它是用純Python編寫的WSGI服務(wù)器的參考實(shí)現(xiàn)。
# server.pyfrom wsgiref.simple_server import make_serverfrom hello import application# 創(chuàng)建一個(gè)服務(wù)器,IP地址為空,端口是8000,處理函數(shù)是application:httpd = make_server(’’, 8000, application)print(’Serving HTTP on port 8000...’)# 開始監(jiān)聽HTTP請(qǐng)求:httpd.serve_forever()
在命令行輸入python server.py即可啟動(dòng)WSGI服務(wù)器。
啟動(dòng)成功后,打開瀏覽器,輸入http://localhost:8000/,即可看到結(jié)果。
按Ctrl+C可以終止服務(wù)器。
以上就是淺析Python 中的 WSGI 接口和 WSGI 服務(wù)的運(yùn)行的詳細(xì)內(nèi)容,更多關(guān)于Python WSGI接口和WSGI服務(wù)的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!
相關(guān)文章:
1. PHP使用Swagger生成好看的API文檔2. 通過實(shí)例解析Python文件操作實(shí)現(xiàn)步驟3. Python3 json模塊之編碼解碼方法講解4. Python 利用Entrez庫(kù)篩選下載PubMed文獻(xiàn)摘要的示例5. ASP.NET MVC使用jQuery ui的progressbar實(shí)現(xiàn)進(jìn)度條6. ASP基礎(chǔ)知識(shí)VBScript基本元素講解7. Python 制作查詢商品歷史價(jià)格的小工具8. python使用jenkins發(fā)送企業(yè)微信通知的實(shí)現(xiàn)9. Python 合并拼接字符串的方法10. Python 如何調(diào)試程序崩潰錯(cuò)誤

網(wǎng)公網(wǎng)安備