浅析Python 中的 WSGI 接口和 WSGI 服务的运行


Posted in Python onDecember 09, 2020

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服务的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
零基础学Python(一)Python环境安装
Aug 20 Python
Python抓取电影天堂电影信息的代码
Apr 07 Python
Python3 处理JSON的实例详解
Oct 29 Python
对python读写文件去重、RE、set的使用详解
Dec 11 Python
python django生成迁移文件的实例
Aug 31 Python
python中栈的原理及实现方法示例
Nov 27 Python
python二元表达式用法
Dec 04 Python
ubuntu16.04升级Python3.5到Python3.7的方法步骤
Aug 20 Python
Python利用Pillow(PIL)库实现验证码图片的全过程
Oct 04 Python
python热力图实现简单方法
Jan 29 Python
python上下文管理的使用场景实例讲解
Mar 03 Python
在Django中使用MQTT的方法
May 10 Python
python dir函数快速掌握用法技巧
Dec 09 #Python
5 分钟读懂Python 中的 Hook 钩子函数
Dec 09 #Python
Python爬虫教程之利用正则表达式匹配网页内容
Dec 08 #Python
Python创建文件夹与文件的快捷方法
Dec 08 #Python
Python之字符串的遍历的4种方式
Dec 08 #Python
利用python爬取有道词典的方法
Dec 08 #Python
Python控制鼠标键盘代码实例
Dec 08 #Python
You might like
PHP去除数组中重复的元素并按键名排序函数
2008/08/18 PHP
一步一步学习PHP(3) php 函数
2010/02/15 PHP
关于php几种字符串连接的效率比较(详解)
2017/02/22 PHP
基于jQuery的弹出消息插件 DivAlert之旅(一)
2010/04/01 Javascript
jquery 插件学习(三)
2012/08/06 Javascript
js实现上传图片之上传前预览图片
2013/03/25 Javascript
使用js在页面中绘制表格核心代码
2013/09/16 Javascript
使用原生js封装webapp滑动效果(惯性滑动、滑动回弹)
2014/05/06 Javascript
盘点javascript 正则表达式中 中括号的【坑】
2016/03/16 Javascript
jQuery删除当前节点元素
2016/12/07 Javascript
jQuery编写设置和获取颜色的插件
2017/01/09 Javascript
基于JavaScript定位当前的地理位置
2017/04/11 Javascript
JS实现二叉查找树的建立以及一些遍历方法实现
2017/04/17 Javascript
微信小程序实现缓存根据不同的id来进行设置和读取缓存
2017/06/12 Javascript
Vue.js 踩坑记之双向绑定
2018/05/03 Javascript
Node.js Buffer用法解读
2018/05/18 Javascript
使用vuex缓存数据并优化自己的vuex-cache
2018/05/30 Javascript
vue+vuex+json-seiver实现数据展示+分页功能
2019/04/11 Javascript
vant IndexBar实现的城市列表的示例代码
2019/11/20 Javascript
linux 下以二进制的方式安装 nodejs
2020/02/12 NodeJs
[41:20]2014 DOTA2华西杯精英邀请赛 5 24 NewBee VS DK
2014/05/26 DOTA
[00:15]TI9地铁玩家打卡
2019/08/11 DOTA
Python实现Const详解
2015/01/27 Python
python 五子棋如何获得鼠标点击坐标
2019/11/04 Python
matplotlib jupyter notebook 图像可视化 plt show操作
2020/04/24 Python
德国圣伯纳德草药屋:Kräuterhaus Sanct Bernhard(有中文站)
2018/08/05 全球购物
英国123鲜花网站:123 Flowers
2019/07/07 全球购物
英国折扣高尔夫商店:Discount Golf Store
2019/11/19 全球购物
计算机专业毕业生求职信分享
2013/12/24 职场文书
企事业单位求职者的自我评价
2013/12/28 职场文书
小学教育见习报告
2014/10/31 职场文书
2015大学迎新晚会主持词
2015/07/16 职场文书
学校学期工作总结
2015/08/13 职场文书
掌握一个领域知识,高效学习必备方法
2019/08/08 职场文书
导游词之无锡丝业博物馆
2019/11/12 职场文书
Vue OpenLayer 为地图绘制风场效果
2022/04/24 Vue.js