浅析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的ORM框架中的SQLAlchemy库的映射关系
Apr 25 Python
安装dbus-python的简要教程
May 05 Python
Python判断Abundant Number的方法
Jun 15 Python
Python使用SQLite和Excel操作进行数据分析
Jan 20 Python
python用quad、dblquad实现一维二维积分的实例详解
Nov 20 Python
Pytorch Tensor基本数学运算详解
Dec 30 Python
Python3 assert断言实现原理解析
Mar 02 Python
如何将tensorflow训练好的模型移植到Android (MNIST手写数字识别)
Apr 22 Python
OpenCV4.1.0+VS2017环境配置的方法步骤
Jul 09 Python
Python实现快速大文件比较代码解析
Sep 04 Python
python与c语言的语法有哪些不一样的
Sep 13 Python
python井字棋游戏实现人机对战
Apr 28 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
ADODB的数据库封包程序库
2006/12/31 PHP
php准确计算复活节日期的方法
2015/04/18 PHP
php5.6.x到php7.0.x特性小结
2019/08/17 PHP
javascript 放大镜 v1.0 基于Yui2 实现的放大镜效果
2010/03/08 Javascript
javascript 内存回收机制理解
2011/01/17 Javascript
Node.js开发者必须了解的4个JS要点
2016/02/21 Javascript
JavaScript代码因逗号不规范导致IE不兼容的问题
2016/02/25 Javascript
jQuery日程管理控件glDatePicker用法详解
2017/03/29 jQuery
深入理解React高阶组件
2017/09/28 Javascript
vue实现导航栏效果(选中状态刷新不消失)
2017/12/13 Javascript
node.js中路由,中间件,ge请求和post请求的参数详解
2017/12/26 Javascript
vue2.0+vue-dplayer实现hls播放的示例
2018/03/02 Javascript
JS代码实现电脑配置检测功能
2018/03/21 Javascript
Node.js中读取TXT文件内容fs.readFile()用法
2018/10/10 Javascript
jQuery表单校验插件validator使用方法详解
2020/02/18 jQuery
Vue记住滚动条和实现下拉加载的完美方法
2020/07/31 Javascript
JavaScript中遍历的十种方法总结
2020/12/15 Javascript
[01:19:46]DOTA2-DPC中国联赛 正赛 SAG vs DLG BO3 第一场 2月28日
2021/03/11 DOTA
Python实现基于二叉树存储结构的堆排序算法示例
2017/12/08 Python
Matplotlib 生成不同大小的subplots实例
2018/05/25 Python
tensorflow实现加载mnist数据集
2018/09/08 Python
python使用PIL模块获取图片像素点的方法
2019/01/08 Python
python的一些加密方法及python 加密模块
2019/07/11 Python
django使用xadmin的全局配置详解
2019/11/15 Python
Python hmac模块使用实例解析
2019/12/24 Python
Python通过两个dataframe用for循环求笛卡尔积
2020/04/29 Python
西班牙多品牌鞋店连锁店:Krack
2018/11/30 全球购物
英国现代市场:ARKET
2019/04/10 全球购物
文职个人求职信范文
2013/09/23 职场文书
编辑找工作求职信范文
2013/12/16 职场文书
英文导游欢迎词
2014/01/11 职场文书
2015年学生管理工作总结
2015/05/26 职场文书
劳保用品管理制度范本
2015/08/06 职场文书
严以用权专题学习研讨会发言材料
2015/11/09 职场文书
亲情作文之母爱
2019/09/25 职场文书
使用Django实现商城验证码模块的方法
2021/06/01 Python