浅析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升级提示Tkinter模块找不到的解决方法
Aug 22 Python
使用IronPython把Python脚本集成到.NET程序中的教程
Mar 31 Python
python使用wxpython开发简单记事本的方法
May 20 Python
浅谈python配置与使用OpenCV踩的一些坑
Apr 02 Python
使用Python的Dataframe取两列时间值相差一年的所有行方法
Jul 10 Python
解决python selenium3启动不了firefox的问题
Oct 13 Python
Python图像处理PIL各模块详细介绍(推荐)
Jul 17 Python
python-opencv获取二值图像轮廓及中心点坐标的代码
Aug 27 Python
python函数局部变量、全局变量、递归知识点总结
Nov 15 Python
Python字符串、列表、元组、字典、集合的补充实例详解
Dec 20 Python
Python 多线程处理任务实例
Nov 07 Python
解析python中的jsonpath 提取器
Jan 18 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获取twitter最新消息的方法
2015/04/14 PHP
PHP7新特性foreach 修改示例介绍
2016/08/26 PHP
php+ajax实现文件切割上传功能示例
2020/03/03 PHP
对象特征检测法判断浏览器对javascript对象的支持
2009/07/25 Javascript
jquery blockUI 遮罩不能消失与不能提交的解决方法
2011/09/17 Javascript
jQuery 网易相册鼠标移动显示隐藏效果实现代码
2013/03/31 Javascript
图片无缝滚动代码(向左/向下/向上)
2013/04/10 Javascript
了不起的node.js读书笔记之mongodb数据库交互
2014/12/22 Javascript
浅谈javascript的调试
2015/01/28 Javascript
jquery实现Slide Out Navigation滑出式菜单效果代码
2015/09/07 Javascript
javascript中去除数组重复元素的实现方法【实例】
2016/04/12 Javascript
详解JavaScript中基于原型prototype的继承特性
2016/05/05 Javascript
JS实现保留n位小数的四舍五入问题示例
2016/08/03 Javascript
jQuery实现对象转为url参数的方法
2017/01/11 Javascript
JS中的三个循环小结
2017/06/20 Javascript
Vue项目移动端滚动穿透问题的实现
2020/05/19 Javascript
使用Python绘制图表大全总结
2017/02/11 Python
基于Python log 的正确打开方式
2018/04/28 Python
python selenium 获取标签的属性值、内容、状态方法
2018/06/22 Python
Python 从一个文件中调用另一个文件的类方法
2019/01/10 Python
python调用opencv实现猫脸检测功能
2019/01/15 Python
python基础 range的用法解析
2019/08/23 Python
Python3 虚拟开发环境搭建过程(图文详解)
2020/01/06 Python
Python如何将函数值赋给变量
2020/04/28 Python
python3.7调试的实例方法
2020/07/21 Python
Python使用Turtle模块绘制国旗的方法示例
2021/02/28 Python
美国家居装饰购物网站:Amanda Lindroth
2020/03/25 全球购物
本科毕业生的求职信范文
2013/11/20 职场文书
小学作文评语大全
2014/04/21 职场文书
政府信息公开实施方案
2014/05/09 职场文书
校长创先争优承诺书
2014/08/30 职场文书
无犯罪记录证明
2014/09/19 职场文书
2016会计专业自荐信范文
2016/01/28 职场文书
MySQL获取所有分类的前N条记录
2021/05/07 MySQL
python 使用tkinter与messagebox写界面和弹窗
2022/03/20 Python
mysql数据库如何转移到oracle
2022/12/24 MySQL