我正在尝试使用cherrypy.engine.start而不是cherrypy.quickstart运行cherrypy。那是因为我想在非阻塞状态下运行cherrypy以使用py.test在我的功能测试中启动和停止Web服务器。
这很好用:
cherrypy.quickstart(WebServerTest(None), config=testconf)
对卷曲的反应是:
curl --head http://127.0.0.1:1026/index HTTP/1.1 200 OK
Date: Thu, 08 Aug 2013 12:54:37 GMT
Content-Length: 0
Content-Type: text/html;charset=utf-8
Server: CherryPy/3.2.2
但它会阻止执行的其余脚本。
然而,这不起作用:
testconf = path.join(path.dirname(__file__), 'webservertest.conf')
web_server = WebServerTest(None)
cherrypy.tree.mount(web_server, "", config=testconf)
cherrypy.engine.start()
time.sleep(60)
cherrypy.engine.stop()
对卷曲的反应是:
curl --head http://127.0.0.1:1026/index
curl: (7) couldn't connect to host
在cherrypy.engine.start之后添加cherrypy.engine.block()并不能解决问题。
那么如何才能使用cherrypy.engine.start()?
webservertest.conf配置文件是:
[global]
server.socket_host = "127.0.0.1"
server.socket_port = 1026
server.thread_pool = 10
答案 0 :(得分:2)
您还需要将conf传递给cherrypy.config.update(conf)
。这适用于全局配置(包括服务器主机和端口),而tree.mount调用仅为该特定应用程序设置配置。阅读quickstart
的源代码,查看所有血腥细节。