WSGI 是什么?和nginx有什么关系?
回顾一下,我们在用python做web开发的时候,一般基于某个web框架来开发,django或者是flask等其它框架。业务开发完成后,就要部署到某台服务器中用于提供对外的访问。
这时候你去网上一搜,他们都会告诉你需要用 gunicorn或者是uwsgi 来部署。那么gunicorn、uwsgi 又是什么玩意。
一、WSGI是一种协议
全称Web Server Gateway Interface
,WSGI
是一种规范,用来描述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有什么关系?相关推荐
- php-fpm nginx 关系,nginx 和php-fpm关系
1).FastCGI进程管理器(php-fpm)自身初始化,启动主进程php-fpm和启动start_servers个CGI 子进程. 主进程php-fpm主要是管理fastcgi子进程,监听9000 ...
- 如何理解Nginx, WSGI, Flask之间的关系
转载自: http://blog.csdn.net/lihao21/article/details/52304119 概览 之前对 Nginx,WSGI(或者 uWSGI,uwsgi),Flask(或 ...
- uwsgi模式_nginx+uwsgi 和nginx+gunicorn区别、如何部署
[线上环境部署Django,nginx+uwsgi 和nginx+gunicorn,这两种方案,应该如何选择?] 大家是采用的何种部署方式? 第一种,高并发稳定一点 我们公司使用的是nginx+gun ...
- nginx+uWSGI+django+virtualenv+supervisor发布web服务器
导论 WSGI是Web服务器网关接口.它是一个规范,描述了Web服务器如何与Web应用程序通信,以及Web应用程序如何链接在一起以处理一个请求,(接收请求,处理请求,响应请求) 基于wsgi运行的框架 ...
- nginx+uWSGI + django部署项目
项目部署 nginx+uWSGI + django 1. WSGI WSGI是Web服务器网关接口.它是一个规范,描述了Web服务器(返回静态资源的就是web服务器,Nginx)如何与Web应用程序( ...
- Nginx+uWSGI+Django原理
Python的Web开发中,如果使用Django框架,那么较为成熟稳定的服务器架构一般是Nginx+uWSGI+Django.而为什么一定要三个结合在一起呢?直接使用Django的runserver来 ...
- 01_Nginx安装,nginx下部署项目,nginx.conf配置文件修改,相关文件配置
1.下载Nginx,进入Nginx下载地址:http://nginx.org/ 点击nginx-1.8.0,进入:http://nginx.org/en/download.html,下载文件: ...
- nginx源码分析--使用GDB调试
在学习优秀的源代码时是少不了源码的跟踪与调试,它不仅是我们解决程序bug的有效途径,也是我们理解.学习优秀源码的有效途径. 本文主要介绍一些源码调试的方法,并结合Nginx源码进行示例. 1,利用GD ...
- 《深入剖析NGINX》学习记录
1.HTTP服务基本特性 处理静态页面请求; 处理index首页请求 对请求目录进行列表显示; 支持多进程间的负载均衡; 对打开文件描述符进行缓存(提高性能); 对反向代理进行缓存(加速); 支持gz ...
最新文章
- WMS(二):Window的删除过程
- res2net 测试
- R3抹掉加载的DLL
- linux中按行读取文件,Linux按行读取文件内容
- ajax deletemapping,springmvc使用put,delete方法传参问题,以及使用@PutMapping注解和@DeleteMapping注解...
- Hey,微信广告收到了吗?你哪个阶层的?
- crontab——Linux 下的定时任务
- 使用IDEA 开发一个安卓HelloWorld的步骤
- asp.net 母版页使用详解--转
- 西北大学本科毕业论文答辩PPT模板
- 常用逻辑用语知识点【初级和中阶辅导】
- Mac版Ps、AE、PR不能突然使用?
- C语言程序设计教程 北京邮电,C语言程序设计教程(第3版)/ 杨路明 9787563543403 北京邮电...
- 计算机二级数据透视图教程,计算机二级语言数据透视表做法
- python两张表对比不同_Python对比数据库两张表是否一致
- 笔记本自带网卡坏了可以使用其他的替代
- 2017年【计算机视觉机器学习人工智能】领域重要会议 汇总 (持续更新)
- java中@Repeatable的理解
- 记 通过ganache与以太坊Dapp实现交互
- 迅雷影音tv版 v5.1.1.3091 官方版
热门文章
- es统计有多少个分组_es多字段分组去重统计
- 微型计算机的内存主要包括rom,信息安全技术题库:路由器硬件组件主要包括( )、闪存、ROM、RAM。 - 作业在线问答...
- 讨厌别人不写注释,但自己也不爱写?那么试试这个IDEA的注释插件吧!
- 使用Spring Security 资源服务器来保护Spring Cloud 微服务
- Spring Boot中使用PostgreSQL数据库
- 皮一皮:女友在意的点....是包子!
- 你真会IDEA的调试功能吗?这4个技巧带你起飞!
- AI 摄像头翻车:把光头裁判误为足球,观众花钱看了个寂寞...
- 阿里云网盘,开放申请啦!非会员下载 10MB/s!有图有真相!
- 微信小游戏「跳一跳」技术手段高分秘籍实现