更改Cherrypy端口并重新启动Web服务器。

11
在Python中,有没有一种方法可以更改cherrypy正在使用的端口并强制Web服务器(而不是Apache,cherrypy)重新启动?
2个回答

20

请看 cherrypy.process.servers。你可以尝试像这样做:

import cherrypy
cherrypy.config.update({'server.socket_port': 8099})
cherrypy.engine.restart()

虽然我同意这应该是正确的答案,但我发现只需进行配置更新,然后在服务器上调用重启即可导致它陷入“等待子线程终止…”和“等待线程Thread-1”的消息中。不确定为什么会这样。 - user975326
restart() 看起来不是线程安全的,而 stop() 和 start() 在我的环境中是线程安全的,至少在我将 cp 运行在单独的线程中时是这样。 - Blindfreddy

9

如果您不想替换整个进程(这就是cherrypy.engine.restart()所做的),您可以执行以下操作:

import cherrypy
cherrypy.engine.stop()
cherrypy.server.httpserver = None
cherrypy.config.update({'server.socket_port': 8099})
cherrypy.engine.start()

需要将httpserver设置为None,否则cherrypy.engine.start()调用会重复使用它已经拥有的主机/端口,而不是采用修改后的配置。然而,我不确定这是否是不适当地利用了实现细节。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接