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

Posted

技术标签:

【中文标题】更改 Cherrypy 端口并重新启动 Web 服务器【英文标题】:Change Cherrypy Port and restart web server 【发布时间】:2011-11-07 11:08:37 【问题描述】:

有没有办法在 python 中更改cherrypy 正在使用的端口并强制 Web 服务器(不是 apache、cherrypy)重新启动?

【问题讨论】:

【参考方案1】:

看看cherrypy.process.servers。你可以试试这样:

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

【讨论】:

虽然我同意这应该是正确的答案,但我发现简单地进行配置更新然后在我的服务器上调用重新启动会导致它“卡住”以下消息:“等待子线程终止...”和“等待线程 Thread-1。”。不知道为什么会这样。 restart() 似乎不是线程安全的,而 stop() 和 start() 至少在我在单独线程中运行 cp 的环境中是。【参考方案2】:

如果您不想替换整个过程(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() 调用将重用它已经拥有的主机/端口,而不是选择更改的配置。不过,我不确定这是否不恰当地利用了实现细节。

【讨论】:

以上是关于更改 Cherrypy 端口并重新启动 Web 服务器的主要内容,如果未能解决你的问题,请参考以下文章

动态更改 Apache 服务器端口(不是手动,通过编程)

以编程方式停止和重新启动快速服务器(以更改端口)

部署 CherryPy(守护进程)

django采用cherrypy作为轻量级web服务器。

如何将 StringTemplate 引擎集成到 CherryPy Web 服务器中

案例六:shell脚本监控httpd服务80端口状态