下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、django源码解析(三) django开发服务器,wsgi规范实现.django源码解析(一) 开篇django源码解析(二) manage.pydjango源码解析(三) django开发服务器,wsgi规范实现 本文描述django runserver中用法的开发服务器如何实现wsgi规范.有位牛人已经翻译了pep333,下文对规范的翻译引用自此牛人的文章.原文 : pep 333 - python web server gateway interface v1.0中文翻译: python web server gateway interface v1.0 中文翻译 django开发服务
2、器类组织 http哀求处理过程 一.启动服务器.用法manage.py runserver指令启动服务器时,事实上是调用django.core.servers.basehttp模块下的run()办法,来实例化一个django.core.servers.basehttp.wsgiserver类的实例.上图中可见wsgiserver继承至python内建的httpserver类,调用其serve_forever()办法即可启动http服务. def run(ar, port, wsgi_handler, ipv6=fae): server_address = (addr, port) = wsgi
3、server(server_address, wsgirequesthandler, ipv6=ipv6) httpd._app(wsgi_handler) httpd.serve_forever() 二.接受http哀求 当有一个http哀求到达服务器,wsgiserver类会通过调用wsgirequesthandler类的handle()办法来处理http哀求. wsgirequesthandler类处理http哀求时,会按照wsgi1.0规范,创建一个wsgi应用程序接口的可调用对象,即wsgihandler类的实例.然后作为参数传递给wsgi服务接口对象,即serverhandler类
4、的实例. 三.处理http哀求 第一,设置系统环境变量.包括http服务器变量和wsgi规范变量 wsgiserver类中,设置http环境变量如下: env'server_name' = self.server_name env'gateway_interface' = 'cgi/1.1' env'server_port' = s(self.server_port) env'remote_host'='' env'content_length'='' env'
5、;script_name' = '' wsgi服务接口对象serverhandler设置wsgi环境变量如下: env'wsgi.input' = self.get_stdin() env'wsgi.errors' = self.get_stderr() env'wsgi.version' = self.wsgi_version env'wsgi.run_oe' = self.wsgi_run_once env'wsgi.url_scheme' = self.get_scheme() env
6、'wsgi.multithread' = self.wsgi_multithread env'wsgi.multiprocess' = self.wsgi_multiprocess 其次,调用应用程序接口对象. wsgihandler类继承至django.core.handlers.basehandler类.basehandler类事实上是django处理http哀求的核心.它完成加载中间件,通过url配置寻觅并调用合适的视图,返回视图处理后的response. 另外,每个视图获得的参数事实上就是django.core.handlers.wsgi.wsgireq
7、uset类的实例. 四.返回response 通过应用程序接口wsgihandler获得相应视图函数返回的response后,服务接口serverhandler通过调用http服务器的()办法,把response返回给http的哀求者. 至此,是一个django开发服务器的http哀求处理的大致过程.固然还有无数详情未描述,如headers的处理. 以下是python web server gateway interface v1.0 中文翻译文章的部分拷贝,这位牛人并未彻低翻译完成,原来决定继续翻译,但是怕翻译出来对不起观众.o()o.临时放在这,日后再说. 本文档描述一份在web服务器与w
8、eb应用/web框架之间的标准接口,此接口的目的是使得web应用在不同web服务器之间具有可移植性。 基本原理与目标 python目前拥有大量的web框架,比如 zope, quixote, webware, skunkweb, pso, 和twist web。大量的挑选使得新手无所适从,由于总得来说,框架的挑选都会限制web服务器的挑选。 对照之下,虽然java也拥有许多web框架,但是java的 servlet api使得用法任何框架编写出来的应用程序可以在任何支持 servlet api的web服务器上运行。服务器中这种针对python的api(不管服务器是用python写的,还是内嵌python,还是通过一种协议来启动python)的用法和普及,将分别人们对web框架和对web服务器的挑选,用户可以自由挑选适合他们的组合,而web服务器和web框架的开发者也能够把精力集中到各自的领域。 因此,这份pep建议在web服务器和web
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 心梗三项临床意义标准化解读
- 2026年秋季开学幼儿园勇敢独立启蒙第一课
- 2026年8月中元节 文明祭祀与安全
- 2026年秋季法学专业开学第一课 专业伦理与职业操守讲座方案
- 2026年北师大版小学六年级数学上册课时《小数四则运算》教案
- 2026年高精地图在滑雪场自动化中的应用
- 2026年可持续办公装修 节能设备与可再生能源利用
- 血液透析康复案例分享
- LC变频器培训PLC变频器培训班plc变频器培训讲义
- H3C与cisco互联问题技术交3c流
- 资产评估师(珠宝)理论强化训练题(含解析)
- 教育法律法规试题带答案
- 2025辽宁盘锦北方沥青股份有限公司大学毕业生招聘18人笔试历年参考题库附带答案详解
- 定额〔2026〕19号 电力工程造价与定额管理总站关于发布2025年版电力建设工程概预算定额价格水平调整办法的通知
- 2026年煤矿重大事故隐患判定标准题库(含答案)
- 江西文演集团招聘笔试题库2026
- 地下空间窒息现场应急处置方案
- 日语阅读试题及答案
- 2026 第六届“四川工匠杯”职业技能大赛 餐厅服务赛项 理论考试参考题库 含答案
- 医院检验科设备更新计划方案
- 2025中国兵器工业第五九研究所招聘参考题库带答案解析
评论
0/150
提交评论