淺析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,也是通過\r\n\r\n
來分隔的。需注意,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接口定義非常簡(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編寫的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...') # 開始監(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)注腳本之家其它相關(guān)文章!
- Python?Web開發(fā)通信協(xié)議WSGI?uWSGI?uwsgi使用對(duì)比全面介紹
- Python安裝和配置uWSGI的詳細(xì)過程
- 通過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開發(fā)之Nginx+uWSGI+virtualenv多項(xiàng)目部署教程
- Python從wsgi導(dǎo)入失敗的問題解決方法
相關(guān)文章
如何使用OpenCV實(shí)現(xiàn)手勢(shì)音量控制
今天來學(xué)習(xí)一下如何使用OpenCV實(shí)現(xiàn)手勢(shì)音量控制,本次實(shí)驗(yàn)需要使用OpenCV和mediapipe庫進(jìn)行手勢(shì)識(shí)別,并利用手勢(shì)距離控制電腦音量,感興趣的朋友跟隨小編一起看看吧2023-11-11Python 3.6打包成EXE可執(zhí)行程序的實(shí)現(xiàn)
這篇文章主要介紹了Python 3.6打包成EXE可執(zhí)行程序的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10實(shí)踐Python的爬蟲框架Scrapy來抓取豆瓣電影TOP250
這篇文章主要介紹了實(shí)踐Python的爬蟲框架Scrapy來抓取豆瓣電影TOP250的過程,文中的環(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)的入門同學(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)潔版只需要通過輸入命令進(jìn)行配置即可,詳細(xì)版本文通過圖文步驟給大家介紹的非常詳細(xì),需要的朋友參考下吧2021-06-06numpy 進(jìn)行數(shù)組拼接,分別在行和列上合并的實(shí)例
今天小編就為大家分享一篇numpy 進(jìn)行數(shù)組拼接,分別在行和列上合并的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-05-05