python中web服务器和web框架之间的规范 小白深度理解WSGI
来源:互联网 发布:php开发基础入门 编辑:程序博客网 时间:2024/06/09 20:21
怎样在你刚建立的Web服务器上运行一个Django应用和Flask应用,如何不做任何改变而适应不同的Web架构那?
在以前,选择Python web架构会受制于可用的web服务器,反之亦然。如果架构和可以协同工作,岂不更好吗?
当要把一个服务器和一个架构结合起来时,有可能会发现他们并不是被设计成协同工作的。
那么,怎么在不修改服务器和架构代码的前提下而确保可以在多个架构下运行web服务器那?答案就是:
Python Web Server Gateway Interface(简称WSGI)
WSGI允许开发者将选择web框架和web服务器分开,可以混合匹配web服务器和web框架,选择一个适合的配对,
比如,可以在Gunicorn或者Nginx/uWSGI或者Waitress上运行Django,Flask,或Pyramid,真正的混合匹配,得益于
WSGI同时支持服务器和架构:
Web服务器必须具备WSGI接口,所有的现代Python Web框架都已具备WSGI接口,它让你不对代码作修改
就能使服务器和特定的Web框架协同工作。
WSGI由Web服务器支持,而Web框架允许你选择适合自己的配对,但它同样对于服务器和框架开发者提供
便利,使他们可以专注于自己偏爱的领域和专长而不至于相互牵制。其他语言也有类似接口:java有Servlet API
,Ruby有Rack等。
当时自己学web框架和web服务器之间遵循的规范WSGI的时候真是一脸懵逼,两个之间函数调来调去,晕
晕的其实当真正知道了web框架能提供什么,web服务器需要什么,把他们之间的关系理理清楚问题就会感觉很
清晰。
下面就一起来理解下把!
首先,我们理解以下,客户端,web服务器,web框架他们之间的大概的关系脉络。
从上图中看出,先总结下没有web框架时,最简单的Client和Server之间的数据收发过程:
1.Client(浏览器)端像服务器发起链接请求,通过和Server三次握手建立连接,三次握手成功后,浏览器发起http请求,是以http协议的格式把请求发送过来。
2.web服务器读取从浏览器发送过来的http的请求,分析浏览器请求的哪个文件,把文件的内容读取出来,加载到程序中去接下来通过http的方式给浏览器(客户端)回过去。
如果是长链接,并不会进行四次挥手,而是用的同一个链接收发数据。
浏览器就是依靠Content-Type来判断响应的内容是网页还是图片,是视频还是音乐。浏览器并不靠URL来判断响应的内容,所以,即使URL是http://www.baidu.com/meimei.jpg,它也不一定就是图片。
HTTP响应的Body就是HTML源码,我们在浏览器菜单栏选择“试图”,“开发者”,“查看网页源码”就可以在浏览器中直接查看HTML源码:
把web应用程序框架中函数的引用传递到web服务器,以供调用:
在web应用程序中调用的web服务器的函数,返回来头(header)信息:
在web_Server中调用web框架中的app函数来返回尾(body)信息:
以上代码分析:
头信息的传递:
- python中web服务器和web框架之间的规范 小白深度理解WSGI
- 初步理解Python Web WSGI
- python web下的服务器结构——WSGI容器、Nginx、Flask之间的关系
- 使用uWSGI Web服务器和Nginx部署Python WSGI应用
- 非Python的Web服务器之Apache WSGI模块安装
- 读书笔记:关于wsgi、web框架和模板的总结(python)
- 我所理解的WSGI(关键词:Python/HTTP/WSGI/web开发)
- [python web]wsgi初探
- web python -- WSGI接口
- wsgi server ,application和wsgi middleware之间关系的理解
- Web 开发规范 — WSGI
- apache+wsgi+python的web调试
- Python中WSGI接口的理解
- 基于Python Web应用的Web服务器之间的比较
- 【Python】Web服务器网关接口(WSGI)的简介及wsgiref模块
- Python的WSGI框架
- web python -- WSGI接口响应
- 一次完整的HTTP通信中,web浏览器和web服务器之间完成的七个步骤
- 状态模式
- 计算图(computational graph)角度看BP(back propagation)算法
- 黑盒测试_边界值分析法
- HDU 6168 Numbers
- Eureka
- python中web服务器和web框架之间的规范 小白深度理解WSGI
- Spring Cloud源码分析Ribbon
- sql server 列信息查询
- AFNetworking怎么post x-www-form-urlencoded类型的数据
- Java面试宝典2015版(绝对值得收藏超长版)(一)
- linux ubuntu 16.04 deb文件的安装
- 程序员笑话...
- 发送短信验证码的思路
- 1024. 科学计数法 (20)