wsgi也就是web服务网关接口,他是一种网络传输协议,在python中实现它的是wsgiref模块和uwsgi模块
wsgiref模块封装了wsgi,使得咱们在使用python的时候不用再去考虑http协议,socket发送等等,只要去使用这个模块就好,当然wsgiref模块效率较低,只是个人测试使用,真正在公司部署网络应用的时候使用的是uwsgi模块
这里先给出wsgiref模块的简单示例,有个感性的认识,后续在分析实现原理;代码如下:
from wsgiref.simple_server import make_server
def application(environ, start_response):
start_response('200 OK', [('Content-Type', 'text/html')])
return [b'<h1>Hello, web!</h1>']
if __name__ == '__main__':
# 创建socket对象,只要有请求到来,就会执行socket函数
httpd = make_server('', 9999, application)
print("Serving HTTP on port 9999...")
# 开启事件监听循环
httpd.serve_forever()
这个示例程序很简单,创建一个httpd服务器,并监听9999端口,当有客户端请求时,在浏览器显示Hello, web字符串;
在循环监听的过程中,每次请求来了就会执行application函数
- 函数中的erviron参数就包含了和请求相关的所有数据
- start_response 参数包含了相应信息
- 函数最后return的就是最后返回的html内容