CGI, FastCGI, WSGI, uWSGI【uwsgi】,uvicorn
CGI、FastCGI、WSGI、uWSGI、uwsgi,分别是啥?
参考: http://www.liuqingzheng.top/article/1/05-CGI ,FastCGI,WSGI,uWSGI,uwsgi%E4%B8%80%E6%96%87%E6%90%9E%E6%87%82/
来源
为了解决Web服务器与应用程序之间的交互问题,就出现了Web服务器与应用程序之间交互的规范。
最早出现的是通用的CGI,后来又出现了改进CGI性能的FastCGI,
Java的 Servlet规范、Python的WSGI规范。
# python web项目的访问
客户端 <--> Nginx <--> uWSGI <--> Python应用程序(Django, Flask)
名词解释
# -CGI、FastCGI、WSGI、uWSGI、uwsgi,分别是啥?
-CGI: # 浏览器通用的网关协议
通用网关接口 是定义了客户端与服务器之间如何传数据的一个标准
-FastCGI: # 浏览器通用的网关协议 CGI的升级版
快速通用网关接口,CGI的升级版
使用FastCGI的服务器
-Apache # 老牌
-Nginx # 主流
-IIS # Windows
-WSGI: # python的网关协议
Web服务器网关接口(Python Web Server Gateway Interface,缩写为WSGI)
是为Python语言定义的 Web服务器 和 Web应用程序或框架 之间通信的一种规范。
自从WSGI被开发出来以后,许多其它语言中也出现了类似接口
一句话总结:为Python定义的web服务器和web框架之间的通信接口标准
所有python的web框架 都必须遵守WSGI协议
-uWSGI: # Python的web服务器 【同步】
实现了WSGI通信规范和uwsgi协议 的web服务器(类似:wsgiref,werkzeug等测试web服务器)
一个Web Server,即一个实现了WSGI协议的服务器,大体和Apache是一个类型的东西,处理发来的请求
-uwsgi: # uWSGI自有的协议
它是uWSGI服务器实现的独有协议,用于定义传输信息的类型,是用于前端服务器(nginx) 与 uWSGI服务器 的通信规范
-uvicorn: # Python的web服务器 【异步】
基于 异步服务器网关接口 ASGI(Asynchronous Server Gateway Interface)协议,
专为异步的 Python Web 框架(如 FastAPI、Starlette)设计。它原生支持 async/await,非常适合高并发、I/O 密集型任务以及 WebSocket 长连接。
pip install 'uvicorn[standard]'
uvicorn main:app --reload # uvicorn 运行文件:FastAPI类的实例 --reload [开启热加载]
注:
虽然 Uvicorn 性能卓越,但在生产环境中,通常不建议直接“裸跑”单进程
最佳实践是将其与 Gunicorn 结合使用:
让 Gunicorn 作为进程管理器(负责管理多核 CPU 和进程调度)
而让 Uvicorn 作为 Worker(工作进程)来处理异步请求
gunicorn main:app -w 4 -k uvicorn.workers.UvicornWorker


浙公网安备 33010602011771号