问题描述
我想了解cherrypy调度程序的工作原理,并简化使用本机接口CPHTTPServer的尝试,如文档中所述。使用默认 WSGI 服务器 (http://localhost:8080/filter?page=1&pagesize=50) 正确提供的 URL 会在 CPHTTPServer 服务器上收到 404 错误。如果没有查询参数 (http://localhost:8080/filter),两台服务器都会找到它。我的设置是:
...
@cherrypy.expose
class FilterHandler(Rest):
@cherrypy.tools.json_out()
def GET(self,*args,**kwargs):
...
cherrypy.tree.mount(Dummy(),'/',{'/': {'tools.staticdir.on': True,'tools.staticdir.dir': ROOT,'tools.staticdir.index': "lame.html"}})
cfg = {'/': {'request.dispatch': cherrypy.dispatch.MethodDispatcher()}}
...
cherrypy.tree.mount(FilterHandler(),'/filter',cfg)
...
from cherrypy._cpnative_server import CPHTTPServer
cherrypy.server.httpserver = CPHTTPServer(cherrypy.server)
...
cherrypy.engine.start()
cherrypy.engine.block()
如果带有 CPHTTPServer 的行被注释掉,则 GET 成功,如果包含它们,如果 /filter 上有任何查询参数,则它会获得 404 状态,如果没有找到正确的处理程序。
404 是在 staticdir 处理程序中生成的,因此我可以(可能)将所有静态文件移出根目录,或者我可以使用默认的 WSGI 服务器,但我很好奇这是否是预期行为,我我做错了什么或者这是一个错误。我在 python 3.9 下运行cherrypy 18.6.0。
感谢您的见解。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)