浅析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进阶教程之文本文件的读取和写入
Aug 29 Python
简单谈谈Python中的元祖(Tuple)和字典(Dict)
Apr 21 Python
Python minidom模块用法示例【DOM写入和解析XML】
Mar 25 Python
Python分支语句与循环语句应用实例分析
May 07 Python
在Pycharm中调试Django项目程序的操作方法
Jul 17 Python
Python读入mnist二进制图像文件并显示实例
Apr 24 Python
Python列表如何更新值
May 27 Python
python神经网络编程实现手写数字识别
May 27 Python
将tf.batch_matmul替换成tf.matmul的实现
Jun 18 Python
Python2及Python3如何实现兼容切换
Sep 01 Python
Django模型验证器介绍与源码分析
Sep 08 Python
pytorch 计算Parameter和FLOP的操作
Mar 04 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
phpmailer在服务器上不能正常发送邮件的解决办法
2014/07/08 PHP
Laravel网站打开速度优化的方法汇总
2017/07/16 PHP
Laravel事件监听器用法实例分析
2019/03/12 PHP
PHP+百度AI OCR文字识别实现了图片的文字识别功能
2019/05/08 PHP
JavaScript中清空数组的三种方法分享
2011/04/07 Javascript
javascript截取字符串(通过substring实现并支持中英文混合)
2013/06/24 Javascript
使用javascript为网页增加夜间模式
2014/01/26 Javascript
jQuery实现带分组数据的Table表头排序实例分析
2015/11/24 Javascript
AngularJS过滤器详解及示例代码
2016/08/16 Javascript
jQuery遍历节点树方法分析
2016/09/08 Javascript
Vue2.0父组件与子组件之间的事件发射与接收实例代码
2017/09/19 Javascript
vue组件横向树实现代码
2018/08/02 Javascript
JS重学系列之聊聊new操作符
2019/03/04 Javascript
JS模拟浏览器实现全局搜索功能
2019/09/11 Javascript
js实现盒子拖拽动画效果
2020/08/09 Javascript
[00:33]DOTA2上海特级锦标赛 CDEC战队宣传片
2016/03/04 DOTA
[01:25:33]完美世界DOTA2联赛PWL S3 INK ICE vs Magma 第二场 12.20
2020/12/23 DOTA
Python 不同对象比较大小示例探讨
2014/08/21 Python
利用Python中的mock库对Python代码进行模拟测试
2015/04/16 Python
Python中关键字nonlocal和global的声明与解析
2017/03/12 Python
Python中zip函数如何使用
2020/06/04 Python
pyCharm 实现关闭代码检查
2020/06/09 Python
python suds访问webservice服务实现
2020/06/26 Python
解决Pycharm 运行后没有输出的问题
2021/02/05 Python
HTML5图片层叠的实现示例
2020/07/07 HTML / CSS
史泰博(Staples)中国官方网站:办公用品一站式采购
2016/09/05 全球购物
西班牙床垫网上商店:Colchones.es
2018/05/06 全球购物
Zooplus罗马尼亚:宠物食品和配件
2019/11/02 全球购物
澳大利亚购买太阳镜和眼镜网站:Glamoureyes
2020/09/22 全球购物
优秀中专生推荐信
2013/11/17 职场文书
八一演出活动方案
2014/02/03 职场文书
辞职书格式样本
2015/02/26 职场文书
教师廉政准则心得体会
2016/01/20 职场文书
装修安全责任协议书
2016/03/22 职场文书
开学季:喜迎新生,迎新标语少不了
2019/11/07 职场文书
HTML静态页面获取url参数和UserAgent的实现
2022/08/05 HTML / CSS