Python CherryPy服务器,做什么cherrypy应用程序是吗?

2024-04-28 05:24:32 发布

您现在位置:Python中文网/ 问答频道 /正文

这里有一个Python程序。 它使用CherryPy创建一个服务器。在

# coding:utf-8

import os.path
import cherrypy

from app import application

def main():

try:                                   
    currentDir_s = os.path.dirname(os.path.abspath(__file__))
except:
    currentDir_s = os.path.dirname(os.path.abspath(sys.executable))
cherrypy.Application.currentDir_s = currentDir_s

configFileName_s = 'server.conf'
if os.path.exists(configFileName_s) == False:
    configFileName_s = None

cherrypy.engine.autoreload.unsubscribe()
cherrypy.engine.timeout_monitor.unsubscribe()

cherrypy.quickstart(application.Application_cl(), config=configFileName_s)

if __name__ == '__main__':
    main()

在“中”服务器配置“它配置服务器:

^{pr2}$

有一件事,我不明白,这行(python代码中的第13行):

cherrypy.Application.currentDir_s = currentDir_s

我在网上查了一下,但什么也没找到。做什么“cherrypy应用程序“是吗?为什么我要做这个任务(cherrypy.Application.currentDir_s公司=当前目录?在


Tags: pathimport服务器ifapplicationosmainengine
1条回答
网友
1楼 · 发布于 2024-04-28 05:24:32

我搜索了cherrypy的源代码,这里是我找到的。 在_cptree.py模块中,您将找到Application类。下面是一个Tree类,它有mount方法,我们用它来绑定应用程序(例如cherrypy.tree.mount(Root(), "/", config=config)

def mount(self, root, script_name="", config=None):
    ...

当你查看这个方法的内部时,你会看到下面的代码

^{pr2}$

因此,代码说明传递给mount方法的每个对象(应用程序)要么是Application实例,要么是包装在Application实例中。那为什么呢?当您检查Application类上面的Tree类时,您将看到一个如下所示的__call__方法

def __call__(self, environ, start_response):
    return self.wsgiapp(environ, start_response)

是的,你现在看到了,它是^{}接口。 因此,Application是cherrypy应用程序的wsgi包装器。 当你检查cherrypy的源代码时,你会学到很多东西。我希望这个答案对你有帮助。在

相关问题 更多 >