看分享,阅见世界,分享此刻。是一个整理、分享,搜索的网站。智阅无界,洞见未来。
  • 聚好看
  • 文章
  • 专题
  • 文章
  • 登录
  • 注册
网中看 网中看 1个月前

为什么有了uWSGI为什么还需要nginx

nginx

比如你在flask中的 app = Flask(name), 这个app就是wsgi app,它只是一个callable对象,传入一个wsgi请求,返回一个wsgi的响应, 想像成一个函数就好了,接收参数,返回结果。

一般的web框架还会提供一个简易的http server, 比如你在flask中 app.run(). 其实就是启动了一个http server,这个server做的事情就是监听端口,把http请求转换为wsgi的请求,传递给wsgi app处理, 再把wsgi app返回的wsgi 响应转换为http的响应,返回给客户端。

  1. 理论上 nginx 可以通过一些手段不用 gunicorn 这玩意。

  2. 计算机世界里面的多一层的解决方案,都是是为了好管理,是为了职责清晰。

  3. 某个场景下可以,不代表在这个场景下这么做就好。比如,你可以去搬砖,但你没必要去搬砖,甚至说,你搬砖水平不如专业搬砖的。

举几个例子

  1. 僧多粥少。nginx 可以上万并发,而正常的 python server 根本不够这么多并发。那么很简单,把nginx作为负载均衡,雨露均沾的分配请求到这些web服务器上。如果直接部署。则是把这些东西耦合在一起。没法scale。

  2. 让专业的去做专业的事情。gunicorn有很多worker的姿势,比如支持 sync worker,gevent worker,比如tornado worker。nginx 如果全都支持,那岂不是要累死nginx团队?

  3. 精准控制,比如gunicorn的sync worker是支持prefork,这也就意味着可以在收到足够多的请求的时候,预先帮你提升worker数量,来处理。
    ————————————————
    版权声明:本文为CSDN博主「DIC专业信息提供者」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/lisheng0947/article/details/122085862



欢迎访问源界面 从代码出发,向无限可能延伸.
【 可以发现更多的个人博客站点,点点滴滴,网络空间中的站点生活! 】

生活看更多

  • © 2025 看分享 阅见世界,分享此刻。
  • 建议
  • | 鄂ICP备14016484号-7

    鄂公网安备 42068402000189

    访问微博看分享