浅析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中lambda的用法及其与def的区别解析
Jul 28 Python
python概率计算器实例分析
Mar 25 Python
python中的break、continue、exit()、pass全面解析
Aug 05 Python
python对excel文档去重及求和的实例
Apr 18 Python
Django认证系统实现的web页面实现代码
Aug 12 Python
Python使用微信接入图灵机器人过程解析
Nov 04 Python
PyCharm下载和安装详细步骤
Dec 17 Python
使用PyTorch实现MNIST手写体识别代码
Jan 18 Python
Python3监控windows,linux系统的CPU、硬盘、内存使用率和各个端口的开启情况详细代码实例
Mar 18 Python
基于Python脚本实现邮件报警功能
May 20 Python
基于python实现坦克大战游戏
Oct 27 Python
python实现银行账户系统
Feb 22 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的header和asp中的redirect比较
2006/10/09 PHP
PHP写UltraEdit插件脚本实现方法
2011/12/26 PHP
php页面跳转代码 输入网址跳转到你定义的页面
2013/03/28 PHP
PHP简单选择排序算法实例
2015/01/26 PHP
thinkphp5 加载静态资源路径与常量的方法
2017/12/24 PHP
来自国外的14个图片放大编辑的jQuery插件整理
2010/10/20 Javascript
jquery+ajax每秒向后台发送请求数据然后返回页面的代码
2011/01/17 Javascript
如何使用jquery动态加载js,css文件实现代码
2013/04/03 Javascript
JavaScript获取客户端计算机硬件及系统等信息的方法
2014/01/02 Javascript
JS创建自定义表格具体实现
2014/02/11 Javascript
window.location不跳转的问题解决方法
2014/04/17 Javascript
JavaScript 浏览器对象模型BOM使用介绍
2015/04/13 Javascript
js实现Form栏显示全格式时间时钟效果代码
2015/08/19 Javascript
BootStrap的双日历时间控件使用
2017/07/25 Javascript
详解关于react-redux中的connect用法介绍及原理解析
2017/09/11 Javascript
vue2组件之select2调用的示例代码
2017/10/12 Javascript
vue.js前后端数据交互之提交数据操作详解
2018/04/24 Javascript
Vue.js 时间转换代码及时间戳转时间字符串
2018/10/16 Javascript
Vue+Express实现登录注销功能的实例代码
2019/05/05 Javascript
微信小程序实现倒计时功能
2020/11/19 Javascript
[03:38]2014DOTA2西雅图国际邀请赛 VG战队巡礼
2014/07/07 DOTA
[01:18]一目了然!DOTA2DotA快捷操作对比第一弹
2014/07/01 DOTA
Python Web框架Tornado运行和部署
2020/10/19 Python
python用post访问restful服务接口的方法
2018/12/07 Python
浅析Python 抽象工厂模式的优缺点
2020/07/13 Python
捷克母婴用品购物网站:Feedo.cz
2020/12/28 全球购物
给海归自荐信的建议
2013/12/13 职场文书
开业庆典策划方案
2014/02/18 职场文书
数控专业毕业生自荐信范文
2014/03/04 职场文书
汽车运用工程专业求职信
2014/06/18 职场文书
向国旗敬礼活动小结
2014/09/27 职场文书
前台岗位职责
2015/02/13 职场文书
升学宴家长致辞
2015/07/27 职场文书
高考百日冲刺决心书
2015/09/23 职场文书
电力企业职工培训心得体会
2016/01/11 职场文书
写给消防战士们的一封慰问信
2019/10/07 职场文书