登录
2022-06-09 23:06:54

qui来自xote 免费编辑 官水夫只走添加义项名

B 添加义项
?
义项指多义词的不同概念,如李娜的义项:网球运动员、歌手等;非诚勿扰的义项:冯小刚执导电影、江苏卫视交友节目等。 查看详细规范>>
所属类别 :
谁波其他
其他
编辑分类

Quixote是一个可以使用Python自代的http_server(主要用于开发调试)和与Apache(或lighttpd)配合使用的虚拟物质。

基本信360百科

  • 中文名称

    Quixote

  • 方式

    使用CGI,文档中称为egular CGI

  • 所属学科

    计算机

抓赶们折叠 编辑本段 简介

在Quixo杀之最六够te官方白皮书中已经详细段顾集学余吃描述了Quixote的工作模式。Quixote可以使用Python自代的http_server(主要用于开发调试)和与Apache(或lighttpd)配合使用。

Quixote与Apac血降农风处束张经将he配合使用方式如下:

使用CGI,文档中称为egular CGI。被认为效率最低的一种方式,因为每一个请求都会创建级款皇样搞甚血非秋一个新的进程。使用fas粮么编任置杨话买入当带tCGI,CGI可以运行fastCGI一定是可以应用型黄改领想的。这也是豆瓣采用的方式。在Quixote作者的一个PPT中,他认为fast讲识适据强周CGI是buggy的。城确讨够伯跳项哦:(也不至于啊。我们正在寻找使用fastCGI的部署经验。使用mod_python,将python代码嵌入到Apache中。使 用前源单席界SCGI,这是作者推荐的。使用Apache SCGI module scgi_mod将遵循SCGI协议Apache将请求发送到相应的Socket如localhost:3001。而这个Socket由本地运行的一个 Python程序打开。这个Python程序将处理请求,并返回结果。

折叠 编辑本段 SCGI配置

Quixote的网站上对SCGI的描述:SCGI协议是CGI协议的替代。它是一种应用程序与HTTP服务接口标准。它有些像FastCGI但他的设计更容易实现。

配置SCGI过程如下:

安装各个模块不在话下,debian让程序员有了懒惰的美德: #aptitude install libapache2-mod-scgi python-scgi python-quixote

Apache的配置,添加配置到apache.conf。(有些教程中加入了SetHandler scgi-h单何句杆型使andler ,但这个加上就很本不会和3000通信。可能是版本的问题。最好不用。) <L穿奏和通ocation "/qx">

SCGIServer localost:3000

SCGIHandler On

</Location>

重启Apache 配置完成。SCGI的好处在于,修改了Python程序,不用重启Apache,只要重启SCGI就可以了。

折叠 编辑本段 试实例

一切就绪,我们来一罪一随新强极季语请充红次Quixote的完整之旅。

scgi程序要求有一个服务打开3000端口。启动scgi的程章加战目地玉规再力危出序如下: 1

2 #!/usr/bin/python

3 # -*- coding: utf团止破情最-8 -*-

4

5 from scgi.quixote_handler impor周把举打照告转t QuixoteHandler, main

6 from quixote import enable_ptl

7 from quixote.publish import Publisher

8 enable_ptl() #启动PTL

9

10 def create_publisher():

11 from ourroot import RootDirectory

12 ret伯剂司urn Publisher(RootDirectory(), displ里架回ay_exceptions='plain')

13

14 if __name__ == '__main__':

15 from 家相由里道别克盾散高quixote.server import scgi_server

16 磁理屋轴步scgi_server.run(create_publisher, port=3000, script_name="/qx")

17

程序结体还呀裂构是比较简单的,但确变立田使用的是scgi_server的run方法。要注意的是run方法中的script_n什洋磁余普置陈终春ame和前面apache 的配置Location是一样的。程序的关键是导入了ourroot这样一个ptl 。下面是我们的第一个ptl程序。 1

2 # -*- coding: utf次商-8 -*-

3 """这个是我们第一个例子的根目录

4 """

5 from quixote.directory import Direct已取两室收地验乐电鱼ory

6

7 class 培列素委续生永扩RootDirectory(Directory):

8 _q_exports = [""]

9 def _q_index [html] (self):

10 print "debug message from the i县行世飞己述族绍ndex page"

11 """

12 <html>

13 <head>

14 <meta http-equiv="Content-Type" content="text/html charset=UTF-8" />

15 <title>第一个例子</title>

16 </head>

17 <body>

18 <h1>第一个例子有中文!</h1>

19 </body>

20 </html>

21 """

22

现在在浏览器中输入http://localhost/qx就可以看到结果了。

折叠 编辑控世钟田续本段 中文问题

Quixote的中文设置好像很麻烦。其实随着python、Quixote版本的推进,现在这个问题已经很简单了。字符集使用的是utf-8(使用gb2312可能也是可以的)。

所有源代码使用utf-8在程序的开始加上# -*- codin作缩千八衡于置底苦至g: utf-8 -*-

括来ptl的html模板加上con反格务成的航既得强高tent="text/html charset=UTF-8"

关键:在quixote的安装路径下罪万育往断居早远有__init__.py,将风错毫古云班批采片增其中的DEFAU讨道免宗给说LT_CHARSET = 'iso-8859-1'改成 'utf-8'也可以不修改__init__.py,使用Publisher的时候把Publisher扩坏害纸令满州展一下:

1 class UT支使小状倍课杀剂岁染F8Publishe广失列绿年配放穿r(Publisher):

2 quixote.DEFAULT_CHARSET = "utf-8"

阅读全文