淺析Python 中的 WSGI 接口和 WSGI 服務(wù)的運(yùn)行
HTTP格式HTTP GET請求的格式:
GET /path HTTP/1.1Header1: Value1Header2: Value2Header3: Value3
每個(gè)Header一行一個(gè),換行符是rn。
HTTP POST請求的格式:
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)頁,Body就是文本,如果是圖片,Body就是圖片的二進(jìn)制數(shù)據(jù)。
當(dāng)存在Content-Encoding時(shí),Body數(shù)據(jù)是被壓縮的,最常見的壓縮方式是gzip。
WSGI接口WSGI:Web Server Gateway Interface。
WSGI接口定義非常簡單,只需要實(shí)現(xiàn)一個(gè)函數(shù),就可以響應(yīng)HTTP請求。
# 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請求信息的dict對象; 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請求:httpd.serve_forever()
在命令行輸入python server.py即可啟動WSGI服務(wù)器。
啟動成功后,打開瀏覽器,輸入http://localhost:8000/,即可看到結(jié)果。
按Ctrl+C可以終止服務(wù)器。
以上就是淺析Python 中的 WSGI 接口和 WSGI 服務(wù)的運(yùn)行的詳細(xì)內(nèi)容,更多關(guān)于Python WSGI接口和WSGI服務(wù)的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!
相關(guān)文章:
1. 詳解CSS偽元素的妙用單標(biāo)簽之美2. 利用CSS3新特性創(chuàng)建透明邊框三角3. msxml3.dll 錯誤 800c0019 系統(tǒng)錯誤:-2146697191解決方法4. Intellij IDEA 2019 最新亂碼問題及解決必殺技(必看篇)5. 一個(gè)用xslt樣式將xml解析為xhtml的類TransformBinder(兼容FF和IE7.0)6. ASP.NET泛型三之使用協(xié)變和逆變實(shí)現(xiàn)類型轉(zhuǎn)換7. xml中的空格之完全解說8. jsp實(shí)現(xiàn)登錄界面9. 小技巧處理div內(nèi)容溢出10. CSS hack用法案例詳解
