如何使用 cherrypy 生成多个 URL 路径?
How can I generate multiple URL paths with cherrypy?
我觉得自己 运行 陷入了困境,因为我对此一无所获,而且我相信这是一项简单的任务。
我正在尝试通过“/path/to/url”之类的人生成一个 URL,但是在查看多个 Whosebug 问答和 cherrypy 的官方文档后,我似乎仍然无法总结我的解决这个问题。
到目前为止,这是我的代码:
import details
import input_checker as input
import time
import cherrypy
class Index(object):
@cherrypy.expose
def input(self):
return input.check_input()
@cherrypy.expose
def stream(self):
while True:
return 'Hey'
#return input.check_input()
time.sleep(3)
if __name__ == '__main__':
index = Index()
cherrypy.tree.mount(index.stream(), '/input/stream', {})
cherrypy.config.update(
{'server.socket_host': '0.0.0.0'})
cherrypy.quickstart(index)
所以基本上,我希望能够访问 http://127.0.0.1:8080/input/stream,我将返回给定的结果。
执行此代码及其多个变体后,我仍然返回 404 未找到错误,我不确定我需要做什么才能使其正常工作。
我可能浏览过的任何提示 and/or 支持文档?
谢谢大家。
所以这里有几个问题,为什么要使用 MethodDispatcher
你真的需要它吗?
要在 /input/stream
上为您提供 stream
功能,您必须这样安装它:
cherrypy.tree.mount(index.stream(), '/input/stream', your_config)
注意 /input/stream
而不是 /stream
。
但是因为您使用的是 MethodDispatcher
这可能会使您的端点 return 405 因为此端点不允许 GET - 要解决此问题只需删除 MethodDispatcher
位。
但是,如果您确实需要 MethodDispatcher
,您将不得不重构一些类似的东西:
class Stream:
exposed = True # to let cherrypy know that we're exposing all methods in this one
def GET(self):
return something
stream = Stream()
cherrypy.tree.mount(stream , '/index/stream',
{'/':
{'request.dispatch': cherrypy.dispatch.MethodDispatcher()}
}
)
同时确保在将它们安装到 cherrypy 树时不会实际调用您的方法,只需传入 function/class
的名称
我觉得自己 运行 陷入了困境,因为我对此一无所获,而且我相信这是一项简单的任务。
我正在尝试通过“/path/to/url”之类的人生成一个 URL,但是在查看多个 Whosebug 问答和 cherrypy 的官方文档后,我似乎仍然无法总结我的解决这个问题。
到目前为止,这是我的代码:
import details
import input_checker as input
import time
import cherrypy
class Index(object):
@cherrypy.expose
def input(self):
return input.check_input()
@cherrypy.expose
def stream(self):
while True:
return 'Hey'
#return input.check_input()
time.sleep(3)
if __name__ == '__main__':
index = Index()
cherrypy.tree.mount(index.stream(), '/input/stream', {})
cherrypy.config.update(
{'server.socket_host': '0.0.0.0'})
cherrypy.quickstart(index)
所以基本上,我希望能够访问 http://127.0.0.1:8080/input/stream,我将返回给定的结果。
执行此代码及其多个变体后,我仍然返回 404 未找到错误,我不确定我需要做什么才能使其正常工作。
我可能浏览过的任何提示 and/or 支持文档?
谢谢大家。
所以这里有几个问题,为什么要使用 MethodDispatcher
你真的需要它吗?
要在 /input/stream
上为您提供 stream
功能,您必须这样安装它:
cherrypy.tree.mount(index.stream(), '/input/stream', your_config)
注意 /input/stream
而不是 /stream
。
但是因为您使用的是 MethodDispatcher
这可能会使您的端点 return 405 因为此端点不允许 GET - 要解决此问题只需删除 MethodDispatcher
位。
但是,如果您确实需要 MethodDispatcher
,您将不得不重构一些类似的东西:
class Stream:
exposed = True # to let cherrypy know that we're exposing all methods in this one
def GET(self):
return something
stream = Stream()
cherrypy.tree.mount(stream , '/index/stream',
{'/':
{'request.dispatch': cherrypy.dispatch.MethodDispatcher()}
}
)
同时确保在将它们安装到 cherrypy 树时不会实际调用您的方法,只需传入 function/class
的名称