Tornado可以当作HTTP server,直接TCP开始实现HTTP服务,这也就是为啥说Tornado可以不经过WSGI。实际上它也不是CGI。

CGI是指通过stdin和stdout进行HTTP的请求处理。

WSGI则是包裹成一个Python对象来传递请求和响应。

WSGI是写入PEP的python的HTTP接口,然而缺点是这个借口是完全同步的,

Tornado最大的特点是可以异步处理请求,然而如果使用WSGI,那就不能做到了。

官方文档明确指出,将Tornado应用作为WSGI应用时异步接口全部不可用。

相反,Tornado可以作为HTTP server向其它框架提供WSGI容器,所以可以用Tornado来做apache/nginx/guicorn之类的事情。

Tornado: HTTP 服务器、WSGI 框架(很少用)

CGI: 古老的动态 HTTP 服务方式,极其低效、容易出漏洞。Perl 盛行的时代很常用。

WSGI: Python 的 HTTP 接口协议

FastCGI: PHP 等的接口协议。PHP 也是唯一一个把 FastCGI 实现得像 CGI 的 FastCGI 实现(HTTP 头可通过环境变量访问)

uwsgi: 它是一个软件。是 WSGI、PSGI 等等的容器。也就是它实现了这些协议。同样实现了 WSGI 的还有 gunicorn 之类的。

nginx: 可以作为代理,把 HTTP 传给 Tornado。也可以作为网关,把 HTTP 转成 FastCGI、uwsgi 协议传给后边的程序

tornado cgi wsgi uwsgi之间的关系的更多相关文章

  1. uWSGI、uwsgi、WSGI、之间的关系,为什么要用nginx加uWSGI部署。

    WSGI 协议 WSGI:是一种协议规范,起到规范参数的作用,就像告诉公路一样,规定超车靠右行,速度不低于90km/h,等.但这一切都是对双方进行沟通,比如,重庆到武汉这条高速路,这儿重庆和武汉就各为 ...

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

    概览 之前对 Nginx,WSGI(或者 uWSGI,uwsgi),Flask(或者 Django),这几者的关系一存存在疑惑.通过查阅了些资料,总算把它们的关系理清了. 总括来说,客户端从发送一个 ...

  3. uWSGI和WSGI之间的关系

    一.WSGI 协议 WSGI:是一种协议规范,起到规范参数的作用,就像告诉公路一样,规定超车靠右行,速度不低于90km/h,等.但这一切都是对双方进行沟通,比如,重庆到武汉这条高速路,这儿重庆和武汉就 ...

  4. 如何理解Nginx, WSGI, Flask(Django)之间的关系

    如何理解Nginx, WSGI, Flask(Django)之间的关系 值得指出的是,WSGI 是一种协议,需要区分几个相近的名词: uwsgi 同 wsgi 一样也是一种协议,uWSGI服务器正是使 ...

  5. Django学习——分组查询、图书管理系统项目、wsgi, uwsgi, cgi, fastcgi

    1 分组查询 # 分组查询 # 查询每一个出版社id,以及图书平均价格(单表) # 原生sql # select publish_id,avg(price) from app01_book group ...

  6. php CGI、Fastcgi、PHP-FPM的详细介绍与之间的关系

    以下PHP CGI.Fastcgi.PHP-FPM的一些信息归纳和汇总----->详细介绍与之间的关系 一:CGI是干嘛的?CGI是为了保证web server传递过来的数据是标准格式的 web ...

  7. uwsgi nginx与django之间的关系以及各自的作用

    首先要明确几个概念及其作用(注意大小写的区别): WSGI uWSGI uwsgi Nginx WSGI 是一种协议,不是任何包不是任何服务器,就和 TCP 协议一样.它定义了 Web 服务器和 We ...

  8. 一文读懂Python web框架和web服务器之间的关系

    我们都知道 Python 作为一门强大的语言,能够适应快速原型和较大项目的制作,因此被广泛用于 web 应用程序的开发中. 在面试的过程中,大家或多或少都被问到过这样一个问题:一个请求从浏览器发出到数 ...

  9. python Web开发之 WSGI & uwsgi & uWSGI

    首先弄清下面几个概念: WSGI 全称是Web Server Gateway Interface,WSGI不是服务器,python模块,框架,API或者任何软件,只是一种规范,描述web server ...

  10. Java Servlet与Web容器之间的关系

    自从计算机软件开发进入网络时代,就开始涉及到通讯问题.在客户/服务器(也叫C/S应用)时期,每个软件都有自己的客户端和服务器端软件.并且客户端和服务器端之间的通讯协议差别也很大.后来随着互联网的发展, ...

随机推荐

  1. vue 打开页面触发事件

    vue中created(),mounted()与activated()区别及应用 created():在创建vue对象时,当html渲染之前就触发:但是注意,全局vue.js不强制刷新或者重启时只创建 ...

  2. Docker容器 获取宿主机CPU信息等或重启网卡命令操作介绍

    一.作用场景及知识点 1. 使用场景(SSH方式除外): A. 运行在Docker容器里面的程序,怎么采集宿主机的CPU.内存.磁盘等信息: B. 容器内更改宿主机的网卡信息,怎么操作宿主机执行命令: ...

  3. 网络服务之DHCP与FTP

    目录 DHCP 一.DHCP是什么? 二.DHCP的优点 三.DHCP的分配过程 四.DHCP的工作原理 五.DHCP动态获取实验 FTP 一.FTP是什么? 二.FTP的数据连接模式 三.svftp ...

  4. memoの二维码分享WiFi

    用下面的网址就好了. https://zxing.appspot.com/generator 不自己动手多没意思!借助python,自己生成一下. 二维码生成库 pip install qrcode, ...

  5. 从redis中取出数据并转成java对象

    1.//数据存入redis中 redisTemplate.opsForValue().set(loginame, JSON.toJSONString(users),1000,TimeUnit.SECO ...

  6. CCF 202012-1 期末预测之安全指数

    #include <iostream> //#include <bits/stdc++.h> #include <string> using namespace s ...

  7. Qt实现带有映射关系的进度条

    1.编写继承自widget的新类,这里我们定义为colorWidget; 2.在colorWidget中添加私有变量QVector<QRect> m_rects,用于存放进度条的不同区间( ...

  8. win常用的dos命令

    常用的dos命令 开启dos终端的两种方式: win+r后输入cmd指令 在资源管理器上方的路径窗口直接输入cmd,即可开启指定路径下的cmd终端,省去了cd/d这一步 注:在dos终端里ctrl+v ...

  9. 解决vuex 状态管理mutations报错为:"[vuex] unknown mutation type: VIWE_NAV"

    报错截图: 我的解决思路: 1.先检查gettes方向获取与actions提交是否畅通,同时专注检查code是否输错. 2.我查了别人多数是""在vuex中没有mutation,有 ...

  10. Apache HTTPD 多后缀解析漏洞复现(Kali)

    ​ 通过vulhub靶场进行复现操作    1.首先搭建靶场环境(采用Kali) cd /vulhub/httpd/apache_parsing_vulnerability //进入对应漏洞目录,具体 ...