作者介绍:【孤寒者】—CSDN全栈领域优质创作者、HDZ核心组成员、华为云享专家Python全栈领域博主、CSDN原力计划作者
- 本文已收录于Python全栈系列教程专栏:《Python全栈系列教程》
- 热门专栏推荐:《Python全栈系列教程》 | 《爬虫从入门到精通系列教程》 | 《爬虫进阶+实战系列教程》 | 《Scrapy框架从入门到实战》 | 《Flask框架从入门到实战》 | 《Django框架从入门到实战》 | 《Tornado框架从入门到实战》 | 《爬虫必备前端技术栈》
- 订阅专栏后可私聊进一千多人Python全栈交流群(手把手教学,问题解答);进群可领取Python全栈教程视频 + 多得数不过来的计算机书籍:基础、Web、爬虫、数据分析、可视化、机器学习、深度学习、人工智能、算法、面试题等。
- 加入我【博主V信:GuHanZheCoder】一起学习进步,一个人可以走的很快,一群人才能走的更远!
文末扫码关注本人公众号~☝️
WSGI,全称 Web Server Gateway Interface,是 Python Web 应用与 Web Server(如 Nginx + uWSGI/Gunicorn)之间的标准接口协议。
简单来说,它定义了一种 Web 服务器如何调用 Python 应用程序的“规范接口”。
WSGI 最初在 PEP 333 提出,后在 PEP 3333 中为了兼容 Python 3 做了扩展。
在 WSGI 出现之前,Python Web 应用没有统一的运行标准。每个框架(如 Django、Flask)和 Web 服务器(如 Apache、Nginx)之间耦合度高,部署困难。
WSGI 的出现,让:
类似于:Java 的 Servlet,PHP 的 mod_php。
WSGI 的本质是:
def application(environ, start_response):
...
return [b'Hello World']
application
: 是一个遵守 WSGI 规范的 可调用对象(函数、类或其它可调用)。environ
: 是一个 包含所有请求信息的字典(如请求路径、查询参数、请求方法等)。start_response
: 是一个 回调函数,用于设置响应的状态码和响应头。✅ 示例:
def application(environ, start_response):
start_response('200 OK', [('Content-Type', 'text/plain')])
return [b'Hello WSGI']
部署时,你用的是 Gunicorn、uWSGI 等 WSGI server:
environ
;application(environ, start_response)
;WSGI 是 “桥梁”,连接:
特性 | WSGI | ASGI |
---|---|---|
协议类型 | 同步(HTTP) | 异步(HTTP、WebSocket) |
使用场景 | 传统 Web 请求 | 实时应用(如聊天、推送) |
性能模型 | 多进程 / 多线程 | 异步事件循环(asyncio) |
框架支持 | Flask、Django(老版本) | FastAPI、Django 3.0+ |
总结:WSGI 是经典同步接口,是 Python Web 应用的“工业基石”;而 ASGI 是未来趋势,适合构建高并发、异步应用。
你可以说:
在我的项目中,我们使用了
uWSGI + Nginx
或Gunicorn + Nginx
来部署 Django/Flask 应用。uWSGI/Gunicorn 作为 WSGI Server,加载 Python WSGI 应用;Nginx 作为反向代理,处理静态文件和负载均衡。
WSGI 是 Python Web 应用和 Web 服务器之间解耦的桥梁,是支撑整个 Python Web 生态的基础接口标准,解决了“应用怎么跑起来”的核心问题。