码迷,mamicode.com
首页 > 其他好文 > 详细

WSGI

时间:2021-06-20 17:55:01      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:todo   数据库   htm   读取   声明   服务器   表单   就是   tar   

1. 什么是WSGI

Web服务器网关接口(Python Web Server Gateway Interface,缩写为WSGI)是为Python语言定义的Web服务器Web应用程序框架之间的一种简单而通用的接口。自从WSGI被开发出来以后,许多其它语言中也出现了类似接口。

技术图片

 

2. 发展历史

1989年

技术图片

 

 

 

特点:

server只能返回静态文件,例如html,css,image等静态文件

 

过程:服务器收到request请求,知道要获取index.html,服务器从硬盘中读取index.html的内容, 将读取的内容放在body中返回。

 

1991年

需求:想让服务器返回html form表单

技术图片

 

 

特点:

技术图片 

1997年

出现了公共的网管接口:CGI

目的是为了设置一组规范,命名一些环境变量,以及声明它们的用途。

公共网关接口(Common Gateway Interface,CGI)是Web 服务器运行时外部程序的规范,按CGI 编写的程序可以扩展服务器功能。
CGI 应用程序能与浏览器进行交互,还可通过数据API与数据库服务器等外部数据源进行通信,从数据库服务器中获取数据。格式化为HTML文档后,发送给浏览器,也可以将从浏览器获得的数据放到数据库中。几乎所有服务器都支持CGI,可用任何语言编写CGI,
包括流行的C、C ++、Java、VB 和Delphi 等。CGI分为标准CGI和间接CGI两种。标准CGI使用命令行参数或环境变量表示服务器的详细请求,服务器与浏览器通信采用标准输入输出方式。间接CGI又称缓冲CGI,在CGI程序和CGI接口之间插入一个缓冲程序,
缓冲程序与CGI接口间用标准输入输出进行通信

 

 规定了下图的内容

技术图片

 

 

2003年

技术图片

 

 

python为了进一步的执行cgi的标准,因此规定了标准化脚本,任何从web服务器调用脚本,都必须拥有类似于nerdy的函数。函数接受两个变量,env是一个dict字典,用来存储cgi规定的变量。foo是一个特殊参数(函数),只需要已特定的方式调用第二个参数即可。

foo函数的两个参数
1. http_status --- response的status
2. http_headers_list --- response的headers

 

nerdy函数返回值,就是response的body部分

 

上图说面了单个http请求的总时间消耗。

紫色部分:http server解析http request,并且创建环境变量(类似于cgi规定的变量)

蓝色部分:用python脚本处理请求所花费的时间。

红色部分:红色表示从硬盘上加载python二进制文件

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

# TODO

WSGI

标签:todo   数据库   htm   读取   声明   服务器   表单   就是   tar   

原文地址:https://www.cnblogs.com/meloncodezhang/p/14905242.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!