浅析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正则表达式判断字符串是否是全部小写示例
Dec 25 Python
Python lambda和Python def区别分析
Nov 30 Python
python实现根据月份和日期得到星座的方法
Mar 27 Python
Python实现简单HTML表格解析的方法
Jun 15 Python
python 基础教程之Map使用方法
Jan 17 Python
python邮件发送smtplib使用详解
Jun 16 Python
python3中os.path模块下常用的用法总结【推荐】
Sep 16 Python
Python利用字典破解WIFI密码的方法
Feb 27 Python
OpenCV3.0+Python3.6实现特定颜色的物体追踪
Jul 23 Python
python json.dumps中文乱码问题解决
Apr 01 Python
Python之qq自动发消息的示例代码
Feb 18 Python
解决Pytorch修改预训练模型时遇到key不匹配的情况
Jun 05 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
第十二节 类的自动加载 [12]
2006/10/09 PHP
Laravel使用RabbitMQ的方法示例
2019/06/18 PHP
一文看懂PHP进程管理器php-fpm
2020/06/01 PHP
JavaScript 学习笔记(十一)
2010/01/19 Javascript
线路分流自动智能跳转代码,自动选择最快镜像网站(js)
2011/10/31 Javascript
封装html的select标签的js操作实例
2013/07/02 Javascript
javascript获取设置div的高度和宽度兼容任何浏览器
2013/09/22 Javascript
javascript常用经典算法实例详解
2015/11/25 Javascript
javascript实现获取浏览器版本、浏览器类型
2015/12/02 Javascript
jQuery拖动元素并对元素进行重新排序
2015/12/30 Javascript
jQuery实现百叶窗焦点图动画效果代码分享(附源码下载)
2016/03/14 Javascript
AngularJS基础 ng-include 指令示例讲解
2016/08/01 Javascript
js实现统计字符串中特定字符出现个数的方法
2016/08/02 Javascript
关于ES6的六个小特性(二)
2017/02/20 Javascript
基于js粘贴事件paste简单解析以及遇到的坑
2017/09/07 Javascript
webpack-url-loader 解决项目中图片打包路径问题
2019/02/15 Javascript
vue路由教程之静态路由
2019/09/03 Javascript
js+h5 canvas实现图片验证码
2020/10/11 Javascript
[12:21]VICI vs TNC (BO3)
2018/06/07 DOTA
利用Python绘制数据的瀑布图的教程
2015/04/07 Python
简单实现python爬虫功能
2015/12/31 Python
python实现汉诺塔算法
2021/03/01 Python
python基于C/S模式实现聊天室功能
2019/01/09 Python
PyTorch里面的torch.nn.Parameter()详解
2020/01/03 Python
解决TensorFlow模型恢复报错的问题
2020/02/06 Python
OpenCV Python实现图像指定区域裁剪
2021/03/12 Python
Python 执行矩阵与线性代数运算
2020/08/01 Python
巴西最大的在线约会网站:ParPerfeito
2018/07/11 全球购物
团员的自我评价
2013/12/01 职场文书
生日礼品店创业计划书范文
2014/03/21 职场文书
平安校园建设方案
2014/05/02 职场文书
大专毕业生求职信
2014/07/05 职场文书
民用住房租房协议书
2014/10/29 职场文书
2015年第十五个全民国防教育日宣传活动方案
2015/05/06 职场文书
Redis实现订单自动过期功能的示例代码
2021/05/08 Redis
Redis高并发缓存架构性能优化
2022/05/15 Redis