Python 无法在cherryPy中同时添加多个应用程序
当我这样做并尝试访问“/api”时,cherryPy抛出“TypeError:'ApiStringGenerator'对象不可调用”错误 但当我在下面换行的时候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 =
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中,我将它们挂载在“/”上,它工作了。:)