中间件 WSGI

冒泡程序

array = [1, 2, 5, 3, 6, 8, 4]

for i in range(len(array) - 1, 0, -1):

print i

for j in range(0, i):

print j

if array[j] > array[j + 1]:

array[j], array[j + 1] = array[j + 1], array[j]

print array

来源: http://www.cnblogs.com/buro79xxd/archive/2011/05/23/2054493.html

单例模式

两个数组只差最小

git等版本管理系统的使用经验

4、对TCP/IP, HTTP等常用协议有基本的了解,能完整叙述一次HTTP请求从客户端到服务器端所经过的各个环节

http是用来浏览网页的,tcp/ip是用来传输信息的

从浏览器输入URL时,请求DNS服务器去解析,获取相对IP;
接下来对该IP地址的服务器进行TCP/IP连接,然后浏览器发来HTTP Request请求包;
服务器处理该请求并返回HTTP Response包;
接下来浏览器开始渲染Response包里的主体,接受完全部以后断开TCP之间的连接。
-------------------------------

4、对TCP/IP, HTTP等常用协议有基本的了解,能完整叙述一次HTTP请求从客户端到服务器端所经过的各个环节

WSGI

PythonWeb服务器网关接口(Python Web Server Gateway Interface,缩写为WSGI)是Python应用程序或框架和Web服务器之间的一种接口,已经被广泛接受, 它已基本达成它的可移植性方面的目标。

WSGI 没有官方的实现, 因为WSGI更像一个协议. 只要遵照这些协议,WSGI应用(Application)都可以在任何服务器(Server)上运行, 反之亦然。

来源: http://baike.baidu.com/link?url=e8DXliMphDH6T63cXLgTp_TLhqTlO3BKPWha7zDi8Y_D81cNcdcIWtIrgJIiiMvQf2Y_hjTGJim1EXWAYSyM6q

http://www.crazyant.net/1001.html

对Django框架架构和Request/Response处理流程的分析

2012/08/24 by Crazyant 暂无评论

一、 处理过程的核心概念

如下图所示django的总览图,整体上把握以下django的组成:

核心在于中间件middleware,django所有的请求、返回都由中间件来完成。

中间件,就是处理HTTP的request和response的,类似插件,比如有Request中间件、view中间件、response中间件、exception中间件等,Middleware都需要在 “project/settings.py” 中 MIDDLEWARE_CLASSES 的定义。大致的程序流程图如下所示:

首先,Middleware都需要在 “project/settings.py” 中 MIDDLEWARE_CLASSES 的定义, 一个HTTP请求,将被这里指定的中间件从头到尾处理一遍,暂且称这些需要挨个处理的中间件为处理链,如果链中某个处理器处理后没有返回response,就把请求传递给下一个处理器;如果链中某个处理器返回了response,直接跳出处理链由response中间件处理后返回给客户端,可以称之为短路处理。

来源: http://www.crazyant.net/1001.html

Django 和其他 Web 框架的 HTTP 处理的流程大致相同,Django 处理一个 Request 的过程是首先通过中间件,然后再通过默认的 URL 方式进行的。我们可以在 Middleware 这个地方把所有 Request 拦截住,用我们自己的方式完成处理以后直接返回 Response。

1. 加载配置

Django 的配置都在 “Project/settings.py” 中定义,可以是 Django 的配置,也可以是自定义的配置,并且都通过 django.conf.settings 访问,非常方便。

2. 启动

最核心动作的是通过 django.core.management.commands.runfcgi 的 Command 来启动,它运行 django.core.servers.fastcgi 中的 runfastcgi , runfastcgi 使用了 flup 的 WSGIServer 来启动 fastcgi 。而 WSGIServer 中携带了 django.core.handlers.wsgi 的 WSGIHandler 类的一个实例,通过 WSGIHandler 来处理由Web服务器(比如Apache,Lighttpd等)传过来的请求,此时才是真正进入 Django 的世界。

3. 处理 Request

当有 HTTP 请求来时, WSGIHandler 就开始工作了,它从 BaseHandler 继承而来。 WSGIHandler 为每个请求创建一个 WSGIRequest 实例,而 WSGIRequest 是从 http.HttpRequest 继承而来。接下来就开始创建 Response 了。

4. 创建Response

BaseHandler 的 get_response 方法就是根据 request 创建 response , 而 具体生成 response 的动作就是执行 urls.py 中对应的view函数了,这也是 Django可以处理“友好URL”的关键步骤,每个这样的函数都要返回一个 Response 实例。此时一般的做法是通过 loader 加载 template 并生成页面内 容,其中重要的就是通过 ORM 技术从数据库中取出数据,并渲染到 Template 中,从而生成具体的页面了。

5. 处理Response

Django 返回 Response 给 flup , flup 就取出 Response 的内容返回给 Web 服务器,由后者返回给浏览器。

总之, Django 在 fastcgi 中主要做了两件事:处理 Request 和创建 Response , 而它们对应的核心就是“urls分析”、“模板技术”和“ORM技术”。

如图所示,一个 HTTP 请求,首先被转化成一个 HttpRequest 对象,然后该对象被传递给 Request 中间件处理,如果该中间件返回了Response,则直接传递给 Response 中间件做收尾处理。否则的话 Request 中间件将访问 URL 配置,确定哪个 view 来处理,在确定了哪个 view 要执行,但是还没有执行该 view 的时候,系统会把 request 传递给 View 中间件处理器进行处理,如果该中间件返回了Response,那么该 Response 直接被传递给 Response 中间件进行后续处理,否则将执行确定的 View 函数处理并返回 Response,在这个过程中如果引发了异常并抛出,会被 Exception 中间件处理器进行处理。

来源: http://www.nowamagic.net/academy/detail/13281815

来自为知笔记(Wiz)

时间: 2024-11-05 21:52:47

中间件 WSGI的相关文章

什么是WSGI

WSGI全称为Python Web Server Gateway Interface,Python Web服务器网关接口,它是介于Web服务器和Web应用程序(或Web框架)之间的一种简单而通用的接口. 我们知道,客户端和服务器端之间进行沟通遵循HTTP协议.但是我们用Python所编写的很多Web程序,并不会直接去处理HTTP请求,因为这太复杂了.所以WSGI诞生了,使从HTTP请求和Web程序之间,多了一种转换过程--从HTTP报文转换成WSGI的数据格式.这个时候,我们的Web程序就可以建

django解析

一.WSGI接口 WSGI服务网关接口:Web Server Gateway Interface缩写. WSGI是python定义的Web服务器和Web应用程序之间或框架之间的通用接口标准. WSGI定义:Web开发者实现了一个函数,并响应HTTP请求. WSGI将Web组件分成三类:Web服务器(WSGI Server),Web中间件(WSGI Middleware),Web用用程序(WSGI Application). Web服务器接收HTTP请求,调用WSGI接口标准注册的WSGI App

Django中间件部分

一.什么是WSGI? WEB框架的本质是一个socket服务端接收用户请求,加工数据返回给客户端(Django),但是Django没有自带socket需要使用 别人的 socket配合Django才能正常运行,socket有很多如下,  但是它们必须遵循一个规范 WSGI(web服务网关接口)这个所有socket都遵守的规范就是WSGI. Django默认使用: wsgiref socket(并发性能低 测试使用) 在公司生产系统上一般用uwsgi+nginx+Django结合使用 wsgire

关于Django中间件自己的一点理解

Django中间件我觉得是一个非常重要的东西,所以把自己的一些理解分享出来,哪里有不对的还希望大家可以帮助我修改. 因为是自己写的代码,所以就把代码粘过来了,里边每一部分都会有自己的理解和注释,见谅! from django.utils.deprecation import MiddlewareMixinfrom django.shortcuts import redirect,HttpResponse #对于有些Django没有MiddleMixin类,就在上边自己写一个,但是这时上边的类引用

Django补充——中间件、请求的生命周期等

一:中间件 django 中的中间件(middleware),在django中,中间件其实就是一个类,在请求到来和结束后,django会根据自己的规则在合适的时机执行中间件中相应的方法. 在django项目的settings模块中,有一个 MIDDLEWARE_CLASSES 变量,其中每一个元素就是一个中间件,如下图. 与mange.py在同一目录下的文件夹 wupeiqi/middleware下的auth.py文件中的Authentication类 中间件中可以定义四个方法,分别是: pro

Wsgi研究

//转载自http://blog.kenshinx.me/blog/wsgi-research/ wsgi是一个搞web开发的pythoner必须了解的内容,之前也零散的看过一些文章,但总感觉好多概念很模糊.这几天抽空又把相关内容好好整理了一下,把笔记贴出来,一些只言片语也许对某些正在研究这个的人有所帮助.wsgi 是一个 web 组件的接口规范.,wsgi将 web 组件分为三类: web服务器,web中间件,web应用程序,下图来自ibm developerworks,很好的说明了三者之间的

wsgi & cgi的一些概念解释

可以看这里 https://www.zhihu.com/question/19998865 如何理解 CGI, WSGI?修改 写补充说明 举报 添加评论 分享 • 邀请回答 默认排序 按时间排序 15 个回答 17 赞同反对,不会显示你的姓名 [已重置] 17 人赞同 WSGI, Web Server Gateway Interface 如全称代表的那样,WSGI不是服务器,不是API,不是Python模块,更不是什么框架,而是一种服务器和客户端交互的接口规范! 更具体的规范说明请搜索“PEP

Python Web 应用:WSGI基础

在Django,Flask,Bottle和其他一切Python web 框架底层的是Web Server Gateway Interface,简称WSGI.WSGI对Python来说就像 Servlets对Java一样——一种用于web服务器并允许不同web服务器和应用框架基于通用API交互的通用规范.然而,对于大多数事情,Python版本实现相当简单. WSGI被定义在PEP 3333协议里面,如果在读完本文之后你想学到更多东西的话,作者建议读者先阅读一下简介. 本文将从一个应用开发者的角度来

WSGI详解

WSGI接口 了解了HTTP协议和HTML文档,我们其实就明白了一个Web应用的本质就是: 浏览器发送一个HTTP请求: 服务器收到请求,生成一个HTML文档: 服务器把HTML文档作为HTTP响应的Body发送给浏览器: 浏览器收到HTTP响应,从HTTP Body取出HTML文档并显示. 所以,最简单的Web应用就是先把HTML用文件保存好,用一个现成的HTTP服务器软件,接收用户请求,从文件中读取HTML,返回.Apache.Nginx.Lighttpd等这些常见的静态服务器就是干这件事情