Python Web开发中最难理解的WSGI协议

本文详细解析了WSGI(web服务网关接口)的概念、其在webserver与webapplication间的作用,以及uWSGI协议与服务器的特点。阐述了WSGI作为规范而非具体软件的重要性,同时介绍了实际生产环境中常用的wsgiserver,如uWSGI、gunicorn等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、WSGI

- 全称是Web Server Gateway Interface,中文名: web服务网关接口
- WSGI【不是】服务器,python模块,框架,API或者任何软件
- 【只是】一种规范、协议,描述web server如何与web application通信的规范。(server和application的规范在PEP 3333中有具体描述)。# 规范即协议
- 要实现WSGI协议,必须同时实现web server和web application,

# 遵循WSGI协议的web框架有Torando,Flask,Django,Odoo

二、web server 和 web application

下文中的wsgi server即是web server, wsgi application即是web application

wsgi server

wsgi server负责从客户端接收请求,将request转发给application,将application返回的response返回给客户端;

框架使用的第三方wsgi server

虽然有些框架本身使用了第三方wsgi server的功能, 但是这些功能仅仅在我们调试时使用,对于真生的生成环境我们通常会使用其他模块(如uWSGI)来代替框架内置的wsgi server

# 注意, tornado框架自带wsgi server

- wsgiref       # django
- werkzeug   # flask,odoo

wsgiref是python实现了WSGI协议的第三方模块

werkzeug是第三方的WSGI工具包

实际生产环境用到的wsgi server

- gunicorn
- uWSGI   (接触较多)
- fcgi
- bjoern

wsgi application

- wsgi application接收由server转发的request,处理请求,并将处理结果返回给server。application中可以包括多个栈式的中间件(middlewares),这些中间件需要同时实现server与application,因此可以在WSGI服务器与WSGI应用之间起调节作用:对服务器来说,中间件扮演应用程序,对应用程序来说,中间件扮演服务器。

web application就是我们的web框架, 比如django, flask, bottle, odoo. (带有供我们调试使用的第三方的wsgi server)

三、请求流程

四、uwsgi

与WSGI一样是一种通信协议,是uWSGI服务器的独占协议,用于定义传输信息的类型(type of information),每一个uwsgi packet前4byte为传输信息类型的描述,与WSGI协议是两种东西,据说该协议是fcgi协议的10倍快。

五、uWSGI

是一个web服务器,实现了WSGI协议、uwsgi协议、http协议等。

补充一下: 其他类似的服务器有gunicorn,fcgi,bjoern ...

转载于:https://www.cnblogs.com/sunch/p/10711267.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值