通过配置文件在CherryPy上嫁接WSGI应用程序

问题描述 投票:0回答:1

我在CherryPy服务器中嵌入(嫁接)了一个WSGI应用程序。

from my_app import application
import cherrypy

if __name__ == '__main__':

    cherrypy.config.update("server.conf")
    cherrypy.tree.graft(application, "/good_stuff/")

    cherrypy.engine.start()
    cherrypy.engine.block()

其中server.conf是定义服务器属性的静态配置文件,依此类推。

[global]                                                  
server.socket_host = "0.0.0.0"
server.socket_port = 8087
server.thread_pool = 30

现在我想使用cherryd实用程序将CherryPy作为守护程序服务运行,因此我应该将代码中的嫁接部分转换为静态配置。

[global]
...
tree.graft = {my_app.application:"/good_stuff/"}

我找不到这方面的实例,但显然不行:

AttributeError: 'ReloaderApp' object has no attribute 'rstrip'

当我尝试启动它时:

$ cherryd -c server.conf -i my_app

想法?

wsgi cherrypy
1个回答
0
投票

解决方案是:

    [global]
    ...
--- tree.graft = {my_app.application:"/good_stuff"}
+++ tree.graft = {"/good_stuff":my_app.application}

无论如何,我从this问题中猜到了这一点。我不确定CherryPy文档中有哪些内容可以让我看到这一点。


在阅读了Bernd Haug的回答here后,我意识到tree.graft(value)转换为cherrypy._cpconfig._tree_config_handler("graft", value),是第一个“移植”只是一个任意标签。我可以打电话给tree.foo并且仍然在引擎盖下(如果Bern Haug是对的),我实际上是在使用WSGI应用程序。

© www.soinside.com 2019 - 2024. All rights reserved.