我在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
想法?
答案 0 :(得分: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是正确的话),我实际上是cherrypy.tree.graft
-正在使用WSGI应用程序。