Python 无法在cherryPy中同时添加多个应用程序

Python 无法在cherryPy中同时添加多个应用程序,python,typeerror,cherrypy,Python,Typeerror,Cherrypy,当我这样做并尝试访问“/api”时,cherryPy抛出“TypeError:'ApiStringGenerator'对象不可调用”错误 但当我在下面换行的时候 cherrypy.tree.mount(ApiStringGenerator(), '/api', conf) cherrypy.tree.mount(StringGenerator(), '/', conf) cherrypy.engine.start() cherrypy.engine.block() 按守则 webapp =

当我这样做并尝试访问“/api”时,cherryPy抛出“TypeError:'ApiStringGenerator'对象不可调用”错误

但当我在下面换行的时候

cherrypy.tree.mount(ApiStringGenerator(), '/api', conf)
cherrypy.tree.mount(StringGenerator(), '/', conf)

cherrypy.engine.start()
cherrypy.engine.block()
按守则

webapp = StringGenerator()
webapp.api = ApiStringGenerator()
cherrypy.quickstart(webapp, '/', conf)
然后没有错误,一切正常。
请提供帮助。

问题在于cherrypy中的配置是相对于装入点的

因此,当您在装入点
/api
内的
/api
中配置
MethodDispatcher
时。您正在激活
/api/api
内部的
MethodDispatcher
,并且在
/api
中使用的dispatcher是默认的,因此尝试调用该对象,因为该对象具有
exposed
属性,但不可调用。这是默认调度程序的行为

如果您想这样做:

cherrypy.tree.mount(ApiStringGenerator(), '/api', conf)
配置需要与
/api
相关:

 {'/': {'request.dispatch':  cherrypy.dispatch.MethodDispatcher(),
        'tools.sessions.on': True,
        'tools.response_headers.on': True,
        'tools.response_headers.headers': [('Content-Type',  'text/plain')]}}

问题是cherrypy中的配置是相对于装入点的

因此,当您在装入点
/api
内的
/api
中配置
MethodDispatcher
时。您正在激活
/api/api
内部的
MethodDispatcher
,并且在
/api
中使用的dispatcher是默认的,因此尝试调用该对象,因为该对象具有
exposed
属性,但不可调用。这是默认调度程序的行为

如果您想这样做:

cherrypy.tree.mount(ApiStringGenerator(), '/api', conf)
配置需要与
/api
相关:

 {'/': {'request.dispatch':  cherrypy.dispatch.MethodDispatcher(),
        'tools.sessions.on': True,
        'tools.response_headers.on': True,
        'tools.response_headers.headers': [('Content-Type',  'text/plain')]}}

谢谢@Cyraxjoe。成功了。现在我创建了两个conf dictionary,一个用于“/”,另一个用于“/api”,在它们的conf dict中,我将它们挂载在“/”上,它工作了。:)谢谢@Cyraxjoe。成功了。现在我创建了两个conf dictionary,一个用于“/”,另一个用于“/api”,在它们的conf dict中,我将它们挂载在“/”上,它工作了。:)