- 我们动态web服务器搭建的目的:是让web服务器运行py脚本,传回值
- 获取了用户请求之后,要先判断是否是以.py结尾的,如果是,就去执行这个py文件
- ctime.py 和 web 服务器之间,要有一个约定,怎么写就怎么调
- web服务器端导入被调用的模块,要用import,但是要用到切片
导入被调用py文件 -
application函数,不管执行了什么代码,返回值是“响应体”,可以返回字符串(可以被当做响应体的内容,返回一个函数无效)
返回“响应体” - WSGI协议规定,在application中决定了响应的状态,是因为每次请求是有可能出错的,所以状态码在application中决定。
- 在服务器传回给浏览器的文件中,有字符串类型的普通文本,也有二进制格式的图片,这就需要application函数中告知返回的文件类型,所有要有Content-Type
-
在application执行的时候,是有可能用到用户的请求数据的,所以关于用户请求的所有数据都放到了env之中,env是一个字典。
env含义 -
env是server调用的时候一个传入参数(本次请求的一些信息),其中包含的一个信息就是PATH_INFO。
env含义 -
剩下的两个变量:状态码status和响应头headers,需要返回给server;所以用到了第二个参数start_response,用来接收状态码和响应头,把这两个变量传给这个函数。
start_response函数 -
start_response函数的作用就是把协议类型和application中的状态码和headers遍历,做一个拼接,形成一个完整的响应头
start_response作用 -
再在if判断的时候,形成一个完整的报文;在发送的时候返回给客户端,最后关闭客户端套接字,形成一个完整的过程。
** 整个流程: **
整个流程
考虑到万一文件有问题,web 的 server 是无法判断识别和解决的,所以状态码放在application中去判断:
status
网友评论