说说我对 WSGI 的理解】的更多相关文章

先说下 WSGI 的表面意思,Web Server Gateway Interface 的缩写,即 Web 服务器网关接口. 之前不知道 WSGI 意思的伙伴,看了上面的解释后,我估计也还是不清楚,所以下面结合实际场景说明,先让大家有个大致的认识.最后我们再自己实现一个,加深对 WSGI 的理解. 我们现在使用 Python 编写 Web 应用,可以用比较流行的 Flask.Django 框架,也可以按自己的想法直接写一个.可选的服务器软件也特别多,比如常见的有 Apache.Nginx.IIS…
https://blog.csdn.net/hzrandd/article/details/10099871 https://blog.csdn.net/cloudxli/article/details/79210333    perfect https://www.cnblogs.com/eric-nirnava/p/wsgi.html ------------------ 前置技能   —   WSGI 在具体读源码之前,这里先需要说一个概念,什么是WSGI. WSGI,全称 Web Ser…
首先看看WSGI的目的是什么? 是用来定义一个统一的接口. 这个接口是针对Web服务器和python Web应用之间的. 以增加Python web应用在不同Web 服务器之间的可移植性. 也就是说如果使用Apache是一种做法, 使用IIS是另外一种做法. 如果都支持的话,那么编写的Web application是通用的.…
Python web开发中,服务端程序可分为2个部分: 服务器程序(用来接收.整理客户端发送的请求) 应用程序(处理服务器程序传递过来的请求) 在开发应用程序的时候,我们会把常用的功能封装起来,成为各种框架,比如Flask,Django,Tornado(使用某框架进行web开发,相当于开发服务端的应用程序,处理后台逻辑) 但是,服务器程序和应用程序互相配合才能给用户提供服务,而不同应用程序(不同框架)会有不同的函数.功能. 此时,我们就需要一个标准,让服务器程序和应用程序都支持这个标准,那么,二…
转https://segmentfault.com/a/1190000004361778 Tips:文章为拜读@xingjiarong 后有感而做的分享,先对作者表示感谢,附原文地址:http://blog.csdn.net/xingjiarong 0. 引言 在上一篇博客中我们提到过,OpenStack每个项目内部的服务进程之间是通过消息总线来通讯的,而在各个项目之间则是通过RESTful API来进行通讯的,在这一篇博客中,我们就来详细的讨论一下OpenStack各个项目之间的通讯. 1.…
WSGI 简介 背景 Python Web 开发中,服务端程序可以分为两个部分,一是服务器程序,二是应用程序.前者负责把客户端请求接收,整理,后者负责具体的逻辑处理.为了方便应用程序的开发,我们把常用的功能封装起来,成为各种Web开发框架,例如 Django, Flask, Tornado.不同的框架有不同的开发方式,但是无论如何,开发出的应用程序都要和服务器程序配合,才能为用户提供服务.这样,服务器程序就需要为不同的框架提供不同的支持.这样混乱的局面无论对于服务器还是框架,都是不好的.对服务器…
linux是一个开源系统,其内核负责管理系统的进程,内存,设备驱动程序,文件和网络系统, 决定着系统的性能和稳定性.由于内核源码很容易获取,任何人都可以将自己认为优秀的代码 加入到其中.linux默认提供了很多服务,如何发挥linux的最大性能,如何精简系统以便适合 当前的业务需求,这需要对内核进行重新编译优化.影响linux性能的因素有很多,从底层硬件 到上层应用,每一部分都可以有优化的地方. linux性能评估与分析工具 影响linux服务器性能的因素有很多,从底层的硬件到操作系统,从网络应…
0. 前言 通过 Django 编写 HTTP 接口时,我们需要指定 URL.Model 和 Views 函数(或者指定 RESTBaseView 对象解析参数和编写逻辑) 编写逻辑时的基本思路就是解析 Request 对象 → 逻辑处理 → 返回 Response 对象 RESTBaseView 对象封装了这一逻辑,我们只需要指定参数.解析方.处理逻辑和返回值即可 1. 基本概念 1.1 WSGI WSGI:是 python web 开发的标准,类似于协议 它是服务器程序和应用程序的一个约定,…
Django(个人推荐, 如果项目较大 需要协同开发, 建议使用django这种重量级框架, 如果类似于纯api的后端应用建议使用 flask, 轻量小巧 , 麻雀虽小五脏俱全) 1.Django是什么 他是一个基于python语言的WEB框架 为什么使用Django 他是python中最大的框架集成很多api 他是全球第五大框架(代表作豆瓣) 适合开发工期短,效率高使用 Django的优势 开发效率高,功能强大 通过wsgi模块理解Django的工作集成原理 路由分发器通过写一个函数上传一个字…
WSGI是什么? WSGI,全称 Web Server Gateway Interface,或者 Python Web Server Gateway Interface ,是为 Python 语言定义的 Web 服务器和 Web 应用程序或框架之间的一种简单而通用的接口.自从 WSGI 被开发出来以后,许多其它语言中也出现了类似接口. WSGI 的官方定义是,the Python Web Server Gateway Interface.从名字就可以看出来,这东西是一个Gateway,也就是网关…
原文:https://www.jb51.net/article/144852.htm WSGI协议 首先弄清下面几个概念: WSGI:全称是Web Server Gateway Interface,WSGI不是服务器,python模块,框架,API或者任何软件,只是一种规范,描述web server如何与web application通信的规范.server和application的规范在PEP 3333中有具体描述.要实现WSGI协议,必须同时实现web server和web applicat…
如何理解Nginx, WSGI, Flask(Django)之间的关系 值得指出的是,WSGI 是一种协议,需要区分几个相近的名词: uwsgi 同 wsgi 一样也是一种协议,uWSGI服务器正是使用了 uwsgi 协议 uWSGI 实现了 uwsgi 和 WSGI 两种协议的web服务器.注意 uWSGI 本质上也是一种 web服务器,处于上面描述的三层结构中的 web服务器层. CGI 通用网关接口,并不限于 Python 语言,定义了 web服务器是如何向客户端提供动态的内容.例如,规定…
CGI规定了如何执行本地脚本技术规范(协议),FastCGI规定了如何远程请求执行脚本的技术规范,WSGI规定了如何请求执行Python脚本的规范. 他们的相同点就是envionment variables 类似于HTTP 的 header,由于CGI技术只是在本地调用,所以不需要编写任何服务器,直接把脚本放在特定的脚本目录中即可.由于FastCGI,WSGI都是远程请求规范,所以HTTP Server和他们之间使用socket,为了出来HTTP Server的请求,就要编写相应的服务器来接受H…
WSGI是Web Server Gateway Interface(Web服务器网关接口)的缩写.其位于web应用程序与web服务器之间.python标准库提供的独立WSGI服务器称为wsgiref. 1.首先了解一下HTTP协议和HTML文档,一个Web应用的本质就是: 浏览器发送一个HTTP请求: 服务器收到请求,生成一个HTML文档: 服务器把HTML文档作为HTTP响应的Body发送给浏览器: 浏览器收到HTTP响应,从HTTP Body取出HTML文档并显示. 所以,最简单的Web应用…
基础概念 首先要了解 WSGI 规范的概念,WSGI(Web Server Gateway Interface)规范描述了web server(Gunicorn,uWSGI等)如何与web application(flask, django等)交互.web application如何处理请求,定义在 pep 3333.正是有了 WSGI 规范,我们才能在任意 web server 上跑各种 web 应用.WSGI API 定义看起来很简单: def application(environ, st…
概览 之前对 Nginx,WSGI(或者 uWSGI,uwsgi),Flask(或者 Django),这几者的关系一存存在疑惑.通过查阅了些资料,总算把它们的关系理清了. 总括来说,客户端从发送一个 HTTP 请求到 Flask 处理请求,分别经过了 web服务器层,WSGI层,web框架层,这三个层次.不同的层次其作用也不同,下面简要介绍各层的作用. 图1:web服务器,web框架与 WSGI 的三层关系 Web服务器层 对于传统的客户端 - 服务器架构,其请求的处理过程是,客户端向服务器发送…
今天在 git.oschina 的首页上看到他们推出演示平台,其中,Python 的演示平台支持 WSGI 接口的应用.虽然,这个演示平台连它自己提供的示例都跑不起来,但是,它还是成功的勾起了我对 WSGI 的好奇心.一番了解,对该机制的认识,总结如下.如有不妥,还望斧正. 为什么是 WSGI? 写过网页应用的各位亲,应该对 CGI 有了解,我们知道,CGI 的全程是“Common Gateway Interface”,即 “通用 Gateway Interface“.没错,这里的 WSGI,就…
用来为server程序和app/framework程序做连接桥梁的,使server和app/framework各自发展,任意组合 上图是python3.4标准库里面,关于wsgiserver的实现.从图中可知,所谓wsgi的server的主要工作是运动tcp进程,解析http协议部分参数:然后交给应用程序app具体处理. 所以可以理解wsgi协议,就是http server和app之间的函数接口,接口的形式是 app(enviro, start_response) 用程序简单表示如下: def…
在Django,Flask,Bottle和其他一切Python web 框架底层的是Web Server Gateway Interface,简称WSGI.WSGI对Python来说就像 Servlets对Java一样--一种用于web服务器并允许不同web服务器和应用框架基于通用API交互的通用规范.然而,对于大多数事情,Python版本实现相当简单. WSGI被定义在PEP 3333协议里面,如果在读完本文之后你想学到更多东西的话,作者建议读者先阅读一下简介. 本文将从一个应用开发者的角度来…
PEP 333 这应该是WSGI最权威的文档了  http://www.python.org/dev/peps/pep-3333/  值翻译了最重要的前面部分,后面读者可以参考 当然文档有些生硬,欢迎大家提出 PEP 333序言 这是PEP 333的更新版本,简单的修改为了提高在Python 3下的可用性,同时将几个长期存在的修正案合并到WSGI(它的代码样本也被移植到Python 3) 由于某些程序的原因,这是一份独特的PEP,以前在Python 2.x下兼容的服务器和运用程序如果不做修改将会…
一直对这四者的概念和区别很模糊,现在就特意梳理一下它们的关系与区别. CGI CGI即通用网关接口(Common Gateway Interface),是外部应用程序(CGI程序)与Web服务器之间的接口标准,是在CGI程序和Web服务器之间传递信息的规程.CGI规范允许 Web服务器执行外部程序,并将它们的输出发送给Web浏览器,CGI将Web的一组简单的静态超媒体文档变成一个完整的新的交互式媒体.通俗的讲CGI 就像是一座桥,把网页和WEB服务器中的执行程序连接起来,它把HTML接收的指令传…
什么是wsgi? wsgi是一个web组件的接口防范,wsgi将web组件分为三类:web服务器,web中间件,web应用程序 wsgi基本处理模式为:wsgi Server -> wsgi middleware -> wsgi application wsgi server: 理解为一个符合wsgi规范的web server,接收request请求,封装一系列环境变量,按照wsgi规范调用注册的wsgi app,最后将response返回给客户端. 工作流程: 1.服务器创建socket,监…
WSGI接口 了解了HTTP协议和HTML文档,我们其实就明白了一个Web应用的本质就是: 浏览器发送一个HTTP请求: 服务器收到请求,生成一个HTML文档: 服务器把HTML文档作为HTTP响应的Body发送给浏览器: 浏览器收到HTTP响应,从HTTP Body取出HTML文档并显示. 所以,最简单的Web应用就是先把HTML用文件保存好,用一个现成的HTTP服务器软件,接收用户请求,从文件中读取HTML,返回.Apache.Nginx.Lighttpd等这些常见的静态服务器就是干这件事情…
一.前言 WSGI服务器 一个Web服务器网关接口 (WSGI)服务器实现了WSGI接口的Web服务器端运行的Python的Web应用程序. 为什么需要WSGI? 传统的Web服务器不理解或有任何方式来运行Python应用程序.在20世纪90年代后期,名为Grisha Trubetskoy的开发人员 提出了一个名为mod_python的Apache模块 来执行任意的Python代码.在20世纪90年代后期和21世纪初,Apache配置的mod_python运行了大多数Python Web应用程序…
要想清楚地理解 python web 框架,首先要清楚浏览器访问服务器的过程. 用户通过浏览器浏览网站的过程: 用户浏览器(socket客户端) 3. 客户端往服务端发消息 6. 客户端接收消息 7. 关闭 网站服务器(socket服务端) 1. 启动,监听 2. 等待客户端连接 4. 服务端收消息 5. 服务端回消息 7. 关闭(一般都不会关闭) 下面,我们先写一个服务端程序,来模拟浏览器服务器访问过程. ''' 简单的web服务端示例 ''' import socket # 生成socket…
背景知识 要使用 Django,首先必须先安装 Django. 下图是 Django 官网的版本支持,我们可以看到上面有一个 LTS 存在.什么是 LTS 呢?LTS ,long-term support,也就是长期技术支持版的意思.长期技术支持版意味着资料的丰富程度和稳定性会比其他版本的要好.可以看到,目前的长期技术是 1.11,而上一个长期技术支持版是 1.8 ,我们尽量使用 1.11 长期技术支持版,因为企业在做技术选型的时候,选择的往往不是最新的,而是最稳定的. 安装 Django,打开…
WSGI协议 首先弄清下面几个概念: WSGI:全称是Web Server Gateway Interface,WSGI不是服务器,python模块,框架,API或者任何软件,只是一种规范,描述web server如何与web application通信的规范.server和application的规范在PEP 3333中有具体描述.要实现WSGI协议,必须同时实现web server和web application,当前运行在WSGI协议之上的web框架有Bottle, Flask, Djan…
类实现wsgi app from wsgiref.util import setup_testing_defaults from wsgiref.simple_server import make_server class Simple_App: def __init__(self,environ,start_response): self.environ = environ self.start_response =start_response status = '200 ok' header…
一.WSGI WSGI ( Web Server Gateway Interface )是一个网络服务器和网络应用的通用接口的规范或者用于Python框架. 由于python开发人员在网络框架的选择限制了网络服务器的选择是python 网络框架的问题.Python应用经常设计只用在 CGI.FastCGI和一些客户API的其中一个上面. WSGI则用来解决这样的矛盾.它构造一个网络服务器和网络客户端间底层或者框架的接口,使得更多应用可以广泛使用.在WSGI规范上编写的应用可以在任何使用WSGI规…
刚开始接触到python及Flask框架时,总是会听到 wsgi等等相关的名词,以及 项目部署时会用到nginx+gunicorn等等,但是对于一个请求从 nignx到gunicorn再到falsk框架中间经历的却一直似懂非懂.现在总结一下. WSGI server:负责从客户端接受请求,将request转发给 WSGI application,再将  WSGI application返回的response传给客户端. WSGI application:负责接受从WSGI server 发送来的…