1. 整体描述
quxite由如下模块构成:
核心处理模块: publish.py
处理url解析的directory.py模块
处理请求体解析的 request.py模块
处理session的session.py
处理form的form.py 和 widget.py
其他的ptl,html,server的目录,及 config.py,logger.py.util.py及等等其他的,都属于功能性的模块,
2.publish.py
要搞清楚publish.py 首先要搞清楚,quixote 对请求的处理从何处开始.
以scgi为例:
apache通过sgci模块的配置,把对应的请求交由scgi模块处理, scgi模块作为客户端把请求发往scgi的服务端.
scgi服务端已由scgi1.14提供实现 ,quixote的server/scgi_server提供了服务端的quixote_handler的实现,scgi的服务端以进程的方式工作,请求到来时,scgi服务端的父进程,会根据情况,fork出子进程对请求进行处理,默认最多fork出5个,超过5个并发的请求就排队等待,这样,每个子进程都会生成一个quixote_handler的实例,每个quixote_handler的实例,又会生成一个 publisher 的实例,意味着: 五个进程里,有5个publisher,就有5个sessionmanager...
当使用quioxte 框架时,首先需要我们编写一个服务程序,把上面的 提到的 scgi1.14对服务端的实现,quixote本身对handler的实现,及我们的初始Directory实现进行整合, 代码一般如下:
start_scgi.py:
#! /usr/bin/env python
#coding=utf-8
import quixote
import sys
from quixote import enable_ptl,get_session_manager
from quixote.publish import Publisher
from quixote.config import Config
enable_ptl() #启动ptl
sys.path.append("/home/shone/Public")
def create_publisher():
from webroot.ui.index import RootDirectory
return Publisher(RootDirectory(),logger=None)
if __name__=='__main__':
reload(sys)
sys.setdefaultencoding('utf-8')
from quixote.server import scgi_server
scgi_server.run(create_publisher,port=4000,script_name='')
命名为start_scgi.py ,在终端键入: python start_scgi.py 即可作为服务端接受scgi模块发送的请求.
process()方法:
接受请求后的第一步就是交给Publisher类的process(self, stdin, env)方法, 该方法根据stdin(对应请求输入流),和env(请求进程的环境变量)生成一个quixote的Request对象,
process_request()方法:
然后以此request为参数调用: process_request(self, request): 方法. 该方法是Publisher类的核心.
a.把request 参数赋值给Publisher实例的request 实例变量.
b.调用parse_request方法,把request中接受到的请求内容(stdin,env),拆解成: cookie, form 参数(包含url参数),server 参数(ip,host,content_length等等,等等)分门别类的放到request实例的各实例变量中备用。
c.调用以request为参数调用try_publish方法,返回response中的output内容。
d.根据output生成response ,把response 返还给scgi的服务端,再返回给scgi模块,再返还给用户浏览器。
至此,由请求到回应的过程走完。。
下一步,分析try_publish方法,,待续
分享到:
相关推荐
尽管"bb1923"可能是一个具体的文件或资源,但由于缺乏上下文,我们无法进一步分析其与"Quixote"和"字体"的关系。如果这个文件是一个字体文件,那么它可能是某种特殊或定制的字体设计,用于特定的设计项目或软件应用...
在这个领域,"前端项目-quixote.zip" 提供了一个关于CSS单元和集成测试的解决方案。Quixote,这个名字来源于西班牙文学中的经典角色唐吉诃德,寓意着它可能是一个旨在挑战常规、解决复杂前端问题的工具或框架。 **...
由于压缩包子文件的文件名称列表只给出了"Quixote-3.1a1",我们可以推测这个目录或文件夹包含了Quixote库的源代码结构,包括Python模块、测试、文档、安装脚本等。通常,一个Python项目的源码结构会包含以下几个部分...
Quixote-CSS单元和集成测试 Quixote是用于测试CSS的库。 它速度很快-每秒可进行100多次测试-并且具有强大的API。 您可以将其用于单元测试(直接测试CSS文件)或集成测试(针对真实服务器进行测试)。 无论哪种方式,...
在Web开发领域,Python提供了多个优秀的Web框架,其中最知名的包括Django、Quixote和Uliweb。下面将对这三个框架进行详细阐述。 首先,Django是Python中最广泛使用的Web框架之一,被誉为“ batteries included ”的...
《PyPI官网下载 | etna_quixote-1.0.8-py3-none-any.whl》 在Python的世界中,PyPI(Python Package Index)是官方的第三方库仓库,它为开发者提供了一个集中地发布和获取Python软件包的平台。资源“etna_quixote-...
- **为什么要学习Python**:解释了Python语言的优势,如易学性、丰富的库支持、广泛的应用领域等,强调其在数据分析、Web开发、自动化脚本等方面的应用价值。 - **代码块与缩进的差异**:Python使用缩进来区分不同的...
《堂吉诃德》是西班牙作家米格尔·德·塞万提斯·萨阿韦德拉的代表作,被誉为现代小说的奠基之作。这部作品通过主人公堂吉诃德的冒险经历,对骑士道精神进行了讽刺与批判,同时也展示了当时社会的各种风貌。约翰·...
吉x德关于Quixote是为提供支持的搜索服务, 是一个网络应用程序,可使通过本地和独立书商快速便捷地搜索书籍。API端点所有请求/响应的Content-Type是application / JSON。 方法小路回复得到/ books /?field = value...
7. **Web 应用开发:** Django、ZOPE、web.py 和 Quixote 等框架简化了 Web 开发流程。 8. **移动设备应用开发:** PyS60 和 PySide 等库可用于移动设备上的应用开发。 9. **嵌入式应用:** Python 可以被嵌入到其他...
QuijoteNet神经网络,用于分析Don Quixote的文本并能够从一小串字符生成文本。 人工智能是西班牙大部分地区乃至世界上最新,最鲜为人知的地区之一。 对于正在寻找人工智能和神经网络课程的任何人来说,很难找到能...
- **免费、开源:** Python是自由软件之一,任何人都可以自由使用、复制、分发和修改。 - **高层语言:** 编写程序时无需考虑底层细节,如内存管理。 - **解释性:** Python是解释型语言,无需编译成二进制代码即可...
6. ActiveGrid、CherryPy、Pylons、TurboGears、Twisted和Quixote等,也是基于Python的Web框架,它们各自具有不同的特点和应用场景。 二、科学计算 Python在科学计算领域有着广泛的应用,以下是一些常用的科学计算...
#### 二、技术栈的发展与优化 ##### 1. 早期阶段的技术优化 - **Gentoo Linux**:使用Gentoo Linux作为操作系统的主要原因是其易于维护的特点。通过使用`emerge mysql`命令可以轻松安装并更新MySQL。此外,通过...