为什么nginx可以直接部署,还要uWSGI,gunicorn等中间件?

比如你在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数量,来处理。比如,gunicorn 进程的用户可能和nginx不一样,具备更高的权限,你用nginx处理,是不是就有点简单粗暴了呢?再比如,我要针对wsgi做一些监控。这怎么处理?TG:li9047

尚美源码教程库提供精美的网站源码教程,小程序、公众号、H5、APP、游戏、直播、支付、区块链、商城、影音、小说等源码信息大全。
用户必须遵守《计算机软件保护条例(2013修订)》第十七条:为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。鉴于此条例,用户从本平台下载的全部源码(软件)教程仅限学习研究,未经版权归属者授权不得商用,若因商用引起的版权纠纷,一切责任均由使用者自行承担,本平台所属公司及其雇员不承担任何法律责任。
尚美源码教程库 » 为什么nginx可以直接部署,还要uWSGI,gunicorn等中间件?
赞助VIP 享更多特权,立即登录下载海量资源
喜欢我嘛?喜欢就按“ctrl+D”收藏我吧!♡