浅析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 相关文章推荐
windows下python安装paramiko模块和pycrypto模块(简单三步)
Jul 06 Python
python3.6使用pymysql连接Mysql数据库
May 25 Python
python学习笔记--将python源文件打包成exe文件(pyinstaller)
May 26 Python
Python使用tkinter库实现文本显示用户输入功能示例
May 30 Python
解决PyCharm的Python.exe已经停止工作的问题
Nov 29 Python
python用opencv批量截取图像指定区域的方法
Jan 24 Python
Python获取时间戳代码实例
Sep 24 Python
使用python代码进行身份证号校验的实现示例
Nov 21 Python
pygame实现弹球游戏
Apr 14 Python
Python流程控制语句的深入讲解
Jun 15 Python
Python钉钉报警及Zabbix集成钉钉报警的示例代码
Aug 17 Python
Python Charles抓包配置实现流程图解
Sep 29 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
使用sockets:从新闻组中获取文章(三)
2006/10/09 PHP
php 301转向实现代码
2008/09/18 PHP
php调用方法mssql_fetch_row、mssql_fetch_array、mssql_fetch_assoc和mssql_fetch_objcect读取数据的区别
2012/08/08 PHP
php查询mssql出现乱码的解决方法
2014/12/29 PHP
php操作redis缓存方法分享
2015/06/03 PHP
PHP微信开发之二维码生成类
2015/06/26 PHP
PHP 文件写入和读取操作实例详解【必看篇】
2019/11/04 PHP
使用AngularJS实现表单向导的方法
2015/06/19 Javascript
微信小程序开发之圆形菜单 仿建行圆形菜单实例
2016/12/12 Javascript
微信小程序实现动态设置页面标题的方法【附源码下载】
2017/11/29 Javascript
动态Axios的配置步骤详解
2018/01/12 Javascript
Vue中computed、methods与watch的区别总结
2019/04/10 Javascript
JavaScript Canvas编写炫彩的网页时钟
2019/10/16 Javascript
JS工厂模式开发实践案例分析
2019/10/17 Javascript
使用p5.js临摹动态图形
2019/10/23 Javascript
使用webpack/gulp构建TypeScript项目的方法示例
2019/12/18 Javascript
基于PHP pthreads实现多线程代码实例
2020/06/24 Javascript
vue实现简易的双向数据绑定
2020/12/29 Vue.js
Python Queue模块详解
2014/11/30 Python
python属于哪种语言
2020/08/16 Python
使用CSS3和Checkbox实现JQuery的一些效果
2015/08/03 HTML / CSS
塔吉特百货公司官网:Target
2017/04/27 全球购物
纽约海:Sea New York
2018/11/04 全球购物
就业推荐自我鉴定
2013/10/06 职场文书
个人实用简单的自我评价
2013/10/19 职场文书
喜之郎果冻广告词
2014/03/20 职场文书
微笑服务标语
2014/06/24 职场文书
新学期标语
2014/06/30 职场文书
2014年大学生村官工作总结
2014/11/19 职场文书
2014年公务员个人工作总结
2014/11/22 职场文书
本溪水洞导游词
2015/02/11 职场文书
寻找成龙观后感
2015/06/12 职场文书
2016年感恩教师节活动总结
2016/04/01 职场文书
标准版个人借条怎么写?以及什么是借条?
2019/08/28 职场文书
面试提问mysql一张表到底能存多少数据
2022/03/13 MySQL
nginx.conf配置文件结构小结
2022/04/08 Servers