浅析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学习笔记之关系映射实例
Jun 10 Python
python实现跨文件全局变量的方法
Jul 07 Python
Python字符串、元组、列表、字典互相转换的方法
Jan 23 Python
pandas实现选取特定索引的行
Apr 20 Python
Python面向对象之反射/自省机制实例分析
Aug 24 Python
对Python捕获控制台输出流的方法详解
Jan 07 Python
Python面向对象程序设计类变量与成员变量、类方法与成员方法用法分析
Apr 12 Python
Python PO设计模式的具体使用
Aug 16 Python
解析Python3中的Import
Oct 13 Python
浅谈selenium如何应对网页内容需要鼠标滚动加载的问题
Mar 14 Python
利用python中的matplotlib打印混淆矩阵实例
Jun 16 Python
Python应用自动化部署工具Fabric原理及使用解析
Nov 30 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 和 MYSQL
2006/10/09 PHP
PHP utf-8编码问题,utf8编码,数据库乱码,页面显示输出乱码
2013/04/08 PHP
PHP计算2点经纬度之间的距离代码
2013/08/12 PHP
php实现的百度搜索某地天气的小偷代码
2014/04/23 PHP
html中table数据排序的js代码
2011/08/09 Javascript
jQuery实现表单提交时判断的方法
2014/12/13 Javascript
JavaScript匿名函数之模仿块级作用域
2015/12/12 Javascript
jQuery实现checkbox列表的全选、反选功能
2016/11/24 Javascript
jQuery实现文件编码成base64并通过AJAX上传的方法
2018/04/12 jQuery
微信小程序定位当前城市的方法
2018/07/19 Javascript
vue移动端html5页面根据屏幕适配的四种解决方法
2018/10/19 Javascript
vue-cli3 从搭建到优化的详细步骤
2019/01/20 Javascript
vuex 动态注册方法 registerModule的实现
2019/07/03 Javascript
vue 实现微信浮标效果
2019/09/01 Javascript
在vue中利用v-html按分号将文本换行的例子
2019/11/14 Javascript
JS中多层次排序算法的实现代码
2021/01/06 Javascript
python发腾讯微博代码分享
2014/01/10 Python
python中遍历文件的3个方法
2014/09/02 Python
Django1.7+python 2.78+pycharm配置mysql数据库教程
2014/11/18 Python
Python编程中装饰器的使用示例解析
2016/06/20 Python
python之消除前缀重命名的方法
2018/10/21 Python
[原创]Python入门教程4. 元组基本操作
2018/10/31 Python
Python饼状图的绘制实例
2019/01/15 Python
PyQt5响应回车事件的方法
2019/06/25 Python
从0到1使用python开发一个半自动答题小程序的实现
2020/05/12 Python
Python如何安装第三方模块
2020/05/28 Python
Perfumetrader荷兰:香水、化妆品和护肤品在线商店
2017/09/15 全球购物
仓管员岗位责任制
2014/02/19 职场文书
股东协议书
2014/04/14 职场文书
中秋节国旗下演讲稿
2014/09/13 职场文书
领导干部考核评语
2015/01/04 职场文书
幼儿园毕业典礼家长致辞
2015/07/29 职场文书
求职自我评价参考范文
2019/05/16 职场文书
CSS实现两列布局的N种方法
2021/08/02 HTML / CSS
Anaconda配置各版本Pytorch的实现
2021/08/07 Python
python中Pyqt5使用Qlabel标签播放视频
2022/04/22 Python