我觉得我碰到了一堵砖墙,因为我没有随处可见,而且我相信,这是一项简单的工作。
我试图通过' / path / to / url'等方式生成一个网址,但是在注视多个StackOverflow Q& A' s时,正式文件为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找不到错误,而且我不确定我需要做什么,以使其正常工作。
我可能已经浏览过的任何提示和/或支持文档?
谢谢你们。
答案 0 :(得分:1)
所以这里有几个问题,为什么你使用MethodDispatcher
你真的需要吗?
要在stream
上为/input/stream
功能提供服务,您必须按原样安装它:
cherrypy.tree.mount(index.stream(), '/input/stream', your_config)
注意/input/stream
而不是/stream
。
但是因为您正在使用MethodDispatcher
,这可能会使您的端点返回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树中时不要实际调用方法,只需传入函数/类的名称