回顾一下,我们在用python做web开发的时候,一般基于某个web框架来开发,django或者是flask等其它框架。业务开发完成后,就要部署到某台服务器中用于提供对外的访问。

这时候你去网上一搜,他们都会告诉你需要用 gunicorn或者是uwsgi 来部署。那么gunicorn、uwsgi 又是什么玩意。

一、WSGI是一种协议

全称Web Server Gateway InterfaceWSGI是一种规范,用来描述web server如何与web application通信的规范。

二、gunicorn和uWSGI是实现了WSGI协议的web服务器

(1)uWSGI:是一个全功能的HTTP服务器,实现了WSGI协议、uwsgi协议、http协议等。
(2)用于接受http请求并转换为WSGI协议,以供实现了WSGI协议的flask使用,并且gunicorn得益于gevent等技术,大幅度提高了性能,在生产环境以替代框架自带的WSGI server。
(3)tornado之类的框架只支持单核,gunicorn可以提供多进程支持,提升多核服务器的处理性能。

三、Nginx也是一种web服务器,但功能和gunicorn/uWSGI有些差别

(1)nginx没有实现WSGI协议,如果是nginx+flask的组合的话就必须使用框架自带的WSGI server,性能渣。

(2)静态文件支持,经过配置之后,nginx可以直接处理静态文件请求而不用经过应用服务器,避免占用宝贵的运算资源;还能缓存静态资源,使访问静态资源的速度提高。

(3) 抗并发压力。可以吸收一些瞬时的高并发请求,让nginx先保持住连接(缓存http请求),然后后端慢慢消化。如果让Gunicorn直接提供服务,浏览器发起一个请求,鉴于浏览器和网络情况都是未知的,http请求的发起过程可能比较慢,而Gunicorn只能等待请求发起完成后,才去真正处理请求,处理完成后,等客户端完全接收请求后,才继续下一个。

(4)HTTP 请求缓存头处理得也比 gunicorn和uWSGI 完善。

(5)多台服务器时,可以提供负载均衡和反向代理。

下图的uwsgi或者gunicorn扮演的角色就是web服务器的角色,这里的服务器是软件层面的服务器,用于处理浏览器发过来的HTTP请求以及将响应结果返回给前端。

而Web框架的主要任务就是处理业务逻辑生成结果返回给web服务器,再由web服务器返回给浏览器。

WSGI 是什么?和nginx有什么关系?相关推荐

  1. php-fpm nginx 关系,nginx 和php-fpm关系

    1).FastCGI进程管理器(php-fpm)自身初始化,启动主进程php-fpm和启动start_servers个CGI 子进程. 主进程php-fpm主要是管理fastcgi子进程,监听9000 ...

  2. 如何理解Nginx, WSGI, Flask之间的关系

    转载自: http://blog.csdn.net/lihao21/article/details/52304119 概览 之前对 Nginx,WSGI(或者 uWSGI,uwsgi),Flask(或 ...

  3. uwsgi模式_nginx+uwsgi 和nginx+gunicorn区别、如何部署

    [线上环境部署Django,nginx+uwsgi 和nginx+gunicorn,这两种方案,应该如何选择?] 大家是采用的何种部署方式? 第一种,高并发稳定一点 我们公司使用的是nginx+gun ...

  4. nginx+uWSGI+django+virtualenv+supervisor发布web服务器

    导论 WSGI是Web服务器网关接口.它是一个规范,描述了Web服务器如何与Web应用程序通信,以及Web应用程序如何链接在一起以处理一个请求,(接收请求,处理请求,响应请求) 基于wsgi运行的框架 ...

  5. nginx+uWSGI + django部署项目

    项目部署 nginx+uWSGI + django 1. WSGI WSGI是Web服务器网关接口.它是一个规范,描述了Web服务器(返回静态资源的就是web服务器,Nginx)如何与Web应用程序( ...

  6. Nginx+uWSGI+Django原理

    Python的Web开发中,如果使用Django框架,那么较为成熟稳定的服务器架构一般是Nginx+uWSGI+Django.而为什么一定要三个结合在一起呢?直接使用Django的runserver来 ...

  7. 01_Nginx安装,nginx下部署项目,nginx.conf配置文件修改,相关文件配置

     1.下载Nginx,进入Nginx下载地址:http://nginx.org/ 点击nginx-1.8.0,进入:http://nginx.org/en/download.html,下载文件: ...

  8. nginx源码分析--使用GDB调试

    在学习优秀的源代码时是少不了源码的跟踪与调试,它不仅是我们解决程序bug的有效途径,也是我们理解.学习优秀源码的有效途径. 本文主要介绍一些源码调试的方法,并结合Nginx源码进行示例. 1,利用GD ...

  9. 《深入剖析NGINX》学习记录

    1.HTTP服务基本特性 处理静态页面请求; 处理index首页请求 对请求目录进行列表显示; 支持多进程间的负载均衡; 对打开文件描述符进行缓存(提高性能); 对反向代理进行缓存(加速); 支持gz ...

最新文章

  1. WMS(二):Window的删除过程
  2. res2net 测试
  3. R3抹掉加载的DLL
  4. linux中按行读取文件,Linux按行读取文件内容
  5. ajax deletemapping,springmvc使用put,delete方法传参问题,以及使用@PutMapping注解和@DeleteMapping注解...
  6. Hey,微信广告收到了吗?你哪个阶层的?
  7. crontab——Linux 下的定时任务
  8. 使用IDEA 开发一个安卓HelloWorld的步骤
  9. asp.net 母版页使用详解--转
  10. 西北大学本科毕业论文答辩PPT模板
  11. 常用逻辑用语知识点【初级和中阶辅导】
  12. Mac版Ps、AE、PR不能突然使用?
  13. C语言程序设计教程 北京邮电,C语言程序设计教程(第3版)/ 杨路明 9787563543403 北京邮电...
  14. 计算机二级数据透视图教程,计算机二级语言数据透视表做法
  15. python两张表对比不同_Python对比数据库两张表是否一致
  16. 笔记本自带网卡坏了可以使用其他的替代
  17. 2017年【计算机视觉机器学习人工智能】领域重要会议 汇总 (持续更新)
  18. java中@Repeatable的理解
  19. 记 通过ganache与以太坊Dapp实现交互
  20. 迅雷影音tv版 v5.1.1.3091 官方版

热门文章

  1. es统计有多少个分组_es多字段分组去重统计
  2. 微型计算机的内存主要包括rom,信息安全技术题库:路由器硬件组件主要包括( )、闪存、ROM、RAM。 - 作业在线问答...
  3. 讨厌别人不写注释,但自己也不爱写?那么试试这个IDEA的注释插件吧!
  4. 使用Spring Security 资源服务器来保护Spring Cloud 微服务
  5. Spring Boot中使用PostgreSQL数据库
  6. 皮一皮:女友在意的点....是包子!
  7. 你真会IDEA的调试功能吗?这4个技巧带你起飞!
  8. AI 摄像头翻车:把光头裁判误为足球,观众花钱看了个寂寞...
  9. 阿里云网盘,开放申请啦!非会员下载 10MB/s!有图有真相!
  10. 微信小游戏「跳一跳」技术手段高分秘籍实现