`
shonelau
  • 浏览: 17030 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Quixote 学习之二: 总体介绍和Publish模块初步分析

阅读更多

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方法,,待续

0
1
分享到:
评论

相关推荐

    Quixote

    尽管"bb1923"可能是一个具体的文件或资源,但由于缺乏上下文,我们无法进一步分析其与"Quixote"和"字体"的关系。如果这个文件是一个字体文件,那么它可能是某种特殊或定制的字体设计,用于特定的设计项目或软件应用...

    前端项目-quixote.zip

    在这个领域,"前端项目-quixote.zip" 提供了一个关于CSS单元和集成测试的解决方案。Quixote,这个名字来源于西班牙文学中的经典角色唐吉诃德,寓意着它可能是一个旨在挑战常规、解决复杂前端问题的工具或框架。 **...

    PyPI 官网下载 | Quixote-3.1a1.tar.gz

    由于压缩包子文件的文件名称列表只给出了"Quixote-3.1a1",我们可以推测这个目录或文件夹包含了Quixote库的源代码结构,包括Python模块、测试、文档、安装脚本等。通常,一个Python项目的源码结构会包含以下几个部分...

    quixote:CSS单元和集成测试

    Quixote-CSS单元和集成测试 Quixote是用于测试CSS的库。 它速度很快-每秒可进行100多次测试-并且具有强大的API。 您可以将其用于单元测试(直接测试CSS文件)或集成测试(针对真实服务器进行测试)。 无论哪种方式,...

    python 的django,quixote,uliweb三个web框架

    在Web开发领域,Python提供了多个优秀的Web框架,其中最知名的包括Django、Quixote和Uliweb。下面将对这三个框架进行详细阐述。 首先,Django是Python中最广泛使用的Web框架之一,被誉为“ batteries included ”的...

    PyPI 官网下载 | etna_quixote-1.0.8-py3-none-any.whl

    《PyPI官网下载 | etna_quixote-1.0.8-py3-none-any.whl》 在Python的世界中,PyPI(Python Package Index)是官方的第三方库仓库,它为开发者提供了一个集中地发布和获取Python软件包的平台。资源“etna_quixote-...

    艾伯特python新员工教材

    - **为什么要学习Python**:解释了Python语言的优势,如易学性、丰富的库支持、广泛的应用领域等,强调其在数据分析、Web开发、自动化脚本等方面的应用价值。 - **代码块与缩进的差异**:Python使用缩进来区分不同的...

    miguel-de-cervantes-saavedra_don-quixote_john-ormsby:Miguel de Cervantes撰写的Don Quixote标准电子书版本的Epub来源。 约翰·奥姆斯比(John Ormsby)翻译

    《堂吉诃德》是西班牙作家米格尔·德·塞万提斯·萨阿韦德拉的代表作,被誉为现代小说的奠基之作。这部作品通过主人公堂吉诃德的冒险经历,对骑士道精神进行了讽刺与批判,同时也展示了当时社会的各种风貌。约翰·...

    quixote:为CityShelf提供支持的搜索服务

    吉x德关于Quixote是为提供支持的搜索服务, 是一个网络应用程序,可使通过本地和独立书商快速便捷地搜索书籍。API端点所有请求/响应的Content-Type是application / JSON。 方法小路回复得到/ books /?field = value...

    python基础归纳

    7. **Web 应用开发:** Django、ZOPE、web.py 和 Quixote 等框架简化了 Web 开发流程。 8. **移动设备应用开发:** PyS60 和 PySide 等库可用于移动设备上的应用开发。 9. **嵌入式应用:** Python 可以被嵌入到其他...

    QuijoteNet:神经网络,用于分析唐吉x德的文本并根据一小串字符生成文本

    QuijoteNet神经网络,用于分析Don Quixote的文本并能够从一小串字符生成文本。 人工智能是西班牙大部分地区乃至世界上最新,最鲜为人知的地区之一。 对于正在寻找人工智能和神经网络课程的任何人来说,很难找到能...

    python入门培训

    - **免费、开源:** Python是自由软件之一,任何人都可以自由使用、复制、分发和修改。 - **高层语言:** 编写程序时无需考虑底层细节,如内存管理。 - **解释性:** Python是解释型语言,无需编译成二进制代码即可...

    python常用框架及第三方库

    6. ActiveGrid、CherryPy、Pylons、TurboGears、Twisted和Quixote等,也是基于Python的Web框架,它们各自具有不同的特点和应用场景。 二、科学计算 Python在科学计算领域有着广泛的应用,以下是一些常用的科学计算...

    豆瓣的成长路线.pdf

    #### 二、技术栈的发展与优化 ##### 1. 早期阶段的技术优化 - **Gentoo Linux**:使用Gentoo Linux作为操作系统的主要原因是其易于维护的特点。通过使用`emerge mysql`命令可以轻松安装并更新MySQL。此外,通过...

Global site tag (gtag.js) - Google Analytics