WSGI简介
- WSGI
- Web服务器网关接口(Python Web Server Gateway Interface,缩写为WSGI)
- 是为Python语言定义的Web服务器(如nginx,uWSGI等服务器)和Web应用程序(如用Django、Flask框架写的程序)之间的一种简单而通用的接口,描述两者通信的一种
规范/协议
,作用就是在协议之间进行转换- 不是服务器、python模块、框架、API或者任何软件
- 基于现存的[CGI]标准而设计的,但WSGI所在层的位置低于CGI,具有很强的伸缩性且能运行于多线程或多进程的环境下
- uWSGI
- 一个
Web服务器
,实现了WSGI协议、uwsgi、http等协议- 一般与nginx一起使用。nginx优秀的静态内容处理能力处理静态内容,并将动态内容转发给uWSGI,达到快速的客户端响应
Client
<—HTTP协议
—>nginx
<—uwsgi协议
—>uWSGI
<—WSGI
—>Flask等框架编写的应用程序
- uwsgi
- 一个uWSGI服务器自有的
协议
,它用于定义传输信息的类型,每一个uwsgi packet前4byte为传输信息类型描述,用于与nginx等代理服务器通信- 与WSGI相比是两样东西
- 参考文档
- https://blog.csdn.net/m0_37438418/article/details/80631048
wsgiref模块
标准的pythonWSGI模块,完全符合WSGI标准,但是不考虑任何运行效率,仅供开发和测试使用。
from wsgiref.simple_server import make_server, demo_app
# 对http请求与响应的封装,由wsgi服务器调用
def app(environ, start_response):
# """
# environ: 是客户端的请求信息
# start_response: 响应反馈给 HTTP 服务器
# """
# 请求处理
if environ['REQUEST_METHOD'] == 'GET' and environ['PATH_INFO'] == '/':
#响应
start_response("200 OK", [('Content-Type', 'text/plain; charset=utf-8')])
return ['hello'.encode("utf-8")]
if __name__ == '__main__':
# 监听请求
server = make_server('127.0.0.1', 6003, app)
# 监听请求
server.serve_forever()
- wsgiref库的坑
https://blog.csdn.net/ttphoon/article/details/90035639