淺析Python 中的 WSGI 接口和 WSGI 服務(wù)的運(yùn)行
HTTP格式
HTTP GET請(qǐng)求的格式:
GET /path HTTP/1.1 Header1: Value1 Header2: Value2 Header3: Value3
每個(gè)Header一行一個(gè),換行符是\r\n
。
HTTP POST請(qǐng)求的格式:
POST /path HTTP/1.1 Header1: Value1 Header2: Value2 Header3: Value3 body data goes here...
當(dāng)遇到連續(xù)兩個(gè)\r\n時(shí),Header部分結(jié)束,后面的數(shù)據(jù)全部是Body。
HTTP響應(yīng)的格式:
200 OK Header1: Value1 Header2: Value2 Header3: Value3 body data goes here...
HTTP響應(yīng)如果包含body,也是通過(guò)\r\n\r\n
來(lái)分隔的。需注意,Body的數(shù)據(jù)類(lèi)型由Content-Type
頭來(lái)確定,如果是網(wǎng)頁(yè),Body就是文本,如果是圖片,Body就是圖片的二進(jìn)制數(shù)據(jù)。
當(dāng)存在Content-Encoding
時(shí),Body數(shù)據(jù)是被壓縮的,最常見(jiàn)的壓縮方式是gzip。
WSGI接口
WSGI:Web Server Gateway Interface。
WSGI接口定義非常簡(jiǎn)單,只需要實(shí)現(xiàn)一個(gè)函數(shù),就可以響應(yīng)HTTP請(qǐng)求。
# 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')]
函數(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編寫(xiě)的WSGI服務(wù)器的參考實(shí)現(xiàn)。
# server.py from wsgiref.simple_server import make_server from hello import application # 創(chuàng)建一個(gè)服務(wù)器,IP地址為空,端口是8000,處理函數(shù)是application: httpd = make_server('', 8000, application) print('Serving HTTP on port 8000...') # 開(kāi)始監(jiān)聽(tīng)HTTP請(qǐng)求: httpd.serve_forever()
在命令行輸入python server.py
即可啟動(dòng)WSGI服務(wù)器。
啟動(dòng)成功后,打開(kāi)瀏覽器,輸入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)注腳本之家其它相關(guān)文章!
- Python?Web開(kāi)發(fā)通信協(xié)議WSGI?uWSGI?uwsgi使用對(duì)比全面介紹
- Python安裝和配置uWSGI的詳細(xì)過(guò)程
- 通過(guò)Python中的CGI接口講解什么是WSGI
- django生產(chǎn)環(huán)境搭建(uWSGI+django+nginx+python+MySQL)
- Python WSGI 規(guī)范簡(jiǎn)介
- Docker構(gòu)建python Flask+ nginx+uwsgi容器
- python web框架 django wsgi原理解析
- Python開(kāi)發(fā)之Nginx+uWSGI+virtualenv多項(xiàng)目部署教程
- Python從wsgi導(dǎo)入失敗的問(wèn)題解決方法
相關(guān)文章
如何使用OpenCV實(shí)現(xiàn)手勢(shì)音量控制
今天來(lái)學(xué)習(xí)一下如何使用OpenCV實(shí)現(xiàn)手勢(shì)音量控制,本次實(shí)驗(yàn)需要使用OpenCV和mediapipe庫(kù)進(jìn)行手勢(shì)識(shí)別,并利用手勢(shì)距離控制電腦音量,感興趣的朋友跟隨小編一起看看吧2023-11-11Python 3.6打包成EXE可執(zhí)行程序的實(shí)現(xiàn)
這篇文章主要介紹了Python 3.6打包成EXE可執(zhí)行程序的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10實(shí)踐Python的爬蟲(chóng)框架Scrapy來(lái)抓取豆瓣電影TOP250
這篇文章主要介紹了實(shí)踐Python的爬蟲(chóng)框架Scrapy來(lái)抓取豆瓣電影TOP250的過(guò)程,文中的環(huán)境基于Windows操作系統(tǒng),需要的朋友可以參考下2016-01-01Python光學(xué)仿真wxpython透鏡演示系統(tǒng)初始化與參數(shù)調(diào)節(jié)
這篇文章主要為大家介紹了Python光學(xué)仿真wxpython透鏡演示系統(tǒng)的初始化與參數(shù)調(diào)節(jié),同樣在學(xué)習(xí)wxpython透鏡演示系統(tǒng)的入門(mén)同學(xué)可以借鑒參考下,希望能夠有所幫助2021-10-10Python激活A(yù)naconda環(huán)境變量的詳細(xì)步驟
今天給大家分享Python激活A(yù)naconda環(huán)境變量的詳細(xì)步驟,激活A(yù)naconda環(huán)境變量分為簡(jiǎn)潔版和詳細(xì)版,簡(jiǎn)潔版只需要通過(guò)輸入命令進(jìn)行配置即可,詳細(xì)版本文通過(guò)圖文步驟給大家介紹的非常詳細(xì),需要的朋友參考下吧2021-06-06Python 實(shí)現(xiàn)過(guò)濾掉列表中唯一值
這篇文章主要介紹了Python 實(shí)現(xiàn)過(guò)濾掉列表中唯一值,文章內(nèi)容主要利用Python代碼實(shí)現(xiàn)過(guò)濾掉列表中的唯一值的功能,需要的朋友可以參考一下2021-11-11numpy 進(jìn)行數(shù)組拼接,分別在行和列上合并的實(shí)例
今天小編就為大家分享一篇numpy 進(jìn)行數(shù)組拼接,分別在行和列上合并的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-05-05