CherryPy的Hello World分析


Hello World
        源码如下:
[python]
import cherrypy 
 
class HelloWorld: 
    def index(self): 
        return "Hello world!" 
    index.exposed = True 
 
cherrypy.quickstart(HelloWorld()) 
CherryPy框架  www.2cto.com
        当一个请求发生时,首先到达的是CPWSGIServer,CPWSGIServer基于socket,win32下对应的底层支持module是process/win32.py。由于CherryPy支持WSGI接口的应用,故CPWSGIServer也能支撑WSGI应用。

        CPWSGIServer会将每个请求封装成一个HTTPConnection,然后扔到队列Queue里面,由ThreadPool中的WorkerThread来处理,处理方式很简单,就是ThreadPool启动多个WorkerThread,每个WorkerThread去Queue中取HTTPConnection,然后处理之。CherryPy中,可以设置WorkerThread的个数。

ThreadPool模块和_cp开头的module的交互是通过_cpserver.Server,它只是一个Adapter,包装了底层的Server类。HTTPConnection会将消息转发到_cptree.Tree,该类中记载了站点的相对路径(比如“/”)和对应的Application之间的对应关系,那么它会跟据不同的URL请求转到对应的Application中。

        Application中则封装了用户定义的类HelloWorld对象,故在需要返回数据给客户端时,调用到HelloWorld中。

相关内容

    暂无相关文章

评论关闭