浅析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 threading多线程编程实例
Sep 18 Python
Python中map和列表推导效率比较实例分析
Jun 17 Python
Python科学计算包numpy用法实例详解
Feb 08 Python
详解Python安装scrapy的正确姿势
Jun 26 Python
django_orm查询性能优化方法
Aug 20 Python
浅析Python 读取图像文件的性能对比
Mar 07 Python
Python Image模块基本图像处理操作小结
Apr 13 Python
Python字典的概念及常见应用实例详解
Oct 30 Python
python定时任务 sched模块用法实例
Nov 04 Python
Python 一行代码能实现丧心病狂的功能
Jan 18 Python
python GUI库图形界面开发之PyQt5信号与槽的高级使用技巧(自定义信号与槽)详解与实例
Mar 06 Python
利用python汇总统计多张Excel
Sep 22 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
Get或Post提交值的非法数据处理
2006/10/09 PHP
php中禁止单个IP与ip段访问的代码小结
2012/07/04 PHP
Javascript打印网页部分内容的脚本
2008/11/17 Javascript
jquery 学习之二 属性(html()与html(val))
2010/11/25 Javascript
js的一些常用方法小结
2011/06/29 Javascript
7款吸引人眼球的jQuery/CSS3特效实例分享
2013/04/25 Javascript
D3.js中data(), enter() 和 exit()的问题详解
2015/08/17 Javascript
jquery密码强度校验
2015/12/02 Javascript
js实现图片无缝滚动
2015/12/23 Javascript
详解js界面跳转与值传递
2016/11/22 Javascript
AngularJs验证重复密码的方法(两种)
2016/11/25 Javascript
JavaScript登录记住密码操作(超简单代码)
2017/03/22 Javascript
JS+canvas实现的五子棋游戏【人机大战版】
2017/07/19 Javascript
JS倒计时实例_天时分秒
2017/08/22 Javascript
简单了解小程序+node梳理登陆流程
2019/06/24 Javascript
node.js express框架简介与实现
2019/07/23 Javascript
JS canvas实现画板和签字板功能
2021/02/23 Javascript
python多线程扫描端口示例
2014/01/16 Python
Python通过select实现异步IO的方法
2015/06/04 Python
Python标准库inspect的具体使用方法
2017/12/06 Python
解决python "No module named pip" 的问题
2018/10/13 Python
Python 操作 ElasticSearch的完整代码
2019/08/04 Python
Python 点击指定位置验证码破解的实现代码
2019/09/11 Python
python解析xml文件方式(解析、更新、写入)
2020/03/05 Python
python中if及if-else如何使用
2020/06/02 Python
丝芙兰法国官网:SEPHORA法国
2016/09/01 全球购物
彪马俄罗斯官网:PUMA俄罗斯
2019/07/13 全球购物
linux面试题参考答案(5)
2016/11/05 面试题
大学生村官演讲稿
2014/04/25 职场文书
高中课程设置方案
2014/05/28 职场文书
单位未婚证明范本
2014/11/25 职场文书
店长岗位职责
2015/02/11 职场文书
通知范文怎么写
2015/04/16 职场文书
2016国培学习心得体会
2016/01/08 职场文书
导游词之湖北武当山
2019/09/23 职场文书
四年级作文之说明文作文
2019/10/14 职场文书