全部博文(2065)
分类: Python/Ruby
2010-04-20 21:19:40
cherrypy模块笔记
示例:
import cherrypy
class HelloWorld(object):
def index(self):
return "Hello World!"
index.exposed = True
cherrypy.quickstart(HelloWorld())
定义了 expose 方法,用来设定方法是否是以被调用!
CherryPy 可以把对象的方法发布出去,因此我们一般会写许多的类。每个可以被调用的方法必须设置方法的exposed属性为True。在2.4中还可以使用cpg模 块中定义好的expose作为decorator方法来使用,如:
class HelloWorld:
@expose
def index(self):
return “Hello world!” 表示这个方法是可以发布的!
类写好后第一步就是绑定这个类的实例到 cpg.root 属性上来。
以下的代码说明:
from cherrypy import cpg
class HelloWorld:
def index(self):
return “Hello world!”
index.exposed
= True
#类定义好了之后就将类的实例绑定以cgp.root属性上来!
cpg.root = HelloWorld()
#然后执行cpg.server.start() 其实这句的含义真正是执行了_cpserver中的start方法!
cpg.server.start(configFile =
‘tutorial.conf’)
这样cherryPy就启动了!
先简单了解一下我总结的CherryPy目录下的各主要文件的功能描述吧。
文件名 |
功能说明 |
cpg.py |
主模块,用于绑定属性。定义了expose方法。 |
_cpconfig.py |
配置信息处理: 提供缺省配置信息setDefaultConfigOption |
_cpdefaults.py |
提供缺省处理方法: 提供_cpLogMessage,用于记录日志 |
_cputil.py |
提供感知线程类(用于多线程处理时对response和request的处理) |
_cpserver.py |
提供服务器的启动(start)和停止方法(stop) |
_cphttpserver.py |
提供真正的server服务,上面的_cpserver.py真正是调用这个模块的启动方法和停止方法。提供了两种
server:CherryHTTPServer和PooledThreadServer,根据配置信息而进行选择。 |
_cphttptools.py |
提供对http的具体处理,如:响应请求处理,处理过滤器,进行URL与对象映射的转换,返回响应,处理session |
lib/filter/basefilter.py |
提供基础的BaseInputFilter和BaseOutputFilter类,用于其它过滤器进行派生,起到一个接口的作用。 |
知道一点它就是一个轻量级的HTTP框架!
这家伙还可以配置成Django自带的HTTP服务器。