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


posted @ 2022-05-26 18:12  Edmond辉仔  阅读(72)  评论(0)    收藏  举报