【发布时间】:2012-12-30 17:36:25
【问题描述】:
如何正确启动cherrypy?它在 3.0 中对我有用,但现在我可以提供内容,但每次触摸源时都必须启动我的服务,即使自动重新加载器正在运行。
我已经添加了cherrypy.engine.block() 语句,该语句有效,但随后cherrypy 停止为我的应用程序提供服务(浏览器中没有响应,即使它正确打开了TCP 端口)。
那么有什么线索或洞察力去寻找哪里或什么?
这是在标准输出上:
[30/Dec/2012:17:05:28] ENGINE Bus STARTING<br>
[30/Dec/2012:17:05:28] ENGINE Started monitor thread 'Autoreloader'.<br>
[30/Dec/2012:17:05:28] ENGINE Started monitor thread '_TimeoutMonitor'.<br>
[30/Dec/2012:17:05:28] ENGINE Serving on 0.0.0.0:8080<br>
[30/Dec/2012:17:05:28] ENGINE Bus STARTED<br>
[30/Dec/2012:17:05:28] ENGINE Bus STARTING<br>
[30/Dec/2012:17:05:28] ENGINE Monitor thread 'Autoreloader' already started.<br>
[30/Dec/2012:17:05:28] ENGINE Monitor thread '_TimeoutMonitor' already started.<br>
[30/Dec/2012:17:05:28] ENGINE Already serving on 0.0.0.0:8080<br>
[30/Dec/2012:17:05:28] ENGINE Bus STARTED<br>
如何开始:
cherrypy.tree.mount(login(), '/', configPath)<br>
cherrypy.tree.mount(reservation(), '/reservation', configPath)<br>
cherrypy.tree.mount(administration(), '/reservation/administration', configPath)<br>
cherrypy.server.socket_host= "0.0.0.0"<br>
cherrypy.engine.start()
【问题讨论】:
-
它看起来好像已经开始了。您在启动时看到了哪些具体错误?
-
我没有看到任何错误——就像我写的让它部分工作的唯一方法是只使用 start 而不使用 block 语句。有了它,cherrypy 不会提供任何服务,浏览器将永远等待响应。
-
两次看到STARTED是不正常的。调用 start then block 是正确的方法,至少对于 CherryPy 3.1+
-
我知道这个事实。但正如我所说,这是让它工作的唯一方法,它确实服务于所需的应用程序。而添加块时它根本不起作用。正如您指出的那样,这不是启动它的正确方法,这就是我寻求帮助的原因!
-
不,实际上这是正确的方法。 CherryPy 提供了两种简单的机制:start+block 或 quickstart(内部调用前者)。当 CherryPy 本身是 mainloop 时使用 block,否则 start 确实足够了。