2011-02-08 44 views
0

我一直在cherrypy有一个奇怪的问题。当我快速启动应用程序时:使用apache时Cherrypy无法找到选项?

cherrypy.quickstart(WebApps(), '/dev/apps/', 'settings.config') 

一切工作正常。但是,当我尝试通过Apache mod_wsgi加载我的应用程序时,似乎没有选项文件的默认选项传递给我创建的工具。

我基本上有一个简单的工具:

@cherrypy.expose 
@cherrypy.tools.checkStatus() 
def doSomething(self,*args, **kwargs): 
    #process the page here 
    ... 

def checkStatus(**kwargs): 
    #handle stuff here 

和一个非常简单的settings.config文件:

[global] 
tools.checkStatus.redirect = 'http://localhost/dev/MyRedirectPage.html' 
tools.checkStatus.returnAfterRedirect = True 

如上所述,当我从快速启动功能运行的checkStatus传递一个参数字典,包含'重定向'和'returnAfterRedirect'。

每当应用程序从mod_wsgi启动时,代码就会运行,但没有参数传递给kwargs。

def application(environ, start_response): 
    app = cherrypy.tree.mount(WebApps(), 
           '/dev/apps/', 
           os.path.join(currentPath,'settings.config')) 

return app(environ, start_response) 

我在这里错过了一些明显的东西吗?为什么第一个版本工作,而不是第二个版本?

感谢

回答

0

我会通过验证os.path.join(currentPath,'settings.config')是什么,你认为它应该是开始......

但假定它,然后尝试移动你的配置条目从[global][/]quickstart会将相同的配置传递给cherrypy.config.update(全局配置)和app.config(应用程序特定配置),但tree.mount仅对后者有效。

+0

我手动调用cherrypy.config.update与设置文件,AS和AS作为参数传递设置文件在tree.mount中。这似乎是诀窍。如果要访问全局变量和应用程序/特定设置,则必须同时执行这两个操作。谢谢 – 2011-02-08 22:15:48