如果我启动一个cherrypy服务器并且端口被占用,我没有找到任何了解它的方法:
进口樱桃 尝试: 樱桃py.quickstart() 打印“消息1” 除了: 打印“消息2”
. 正如我在 pdb 中看到的那样,它分叉了另一个实例,这个新实例将失败(返回回溯),我看不到任何了解它的机会。我的打印行也没有打印出来。
如果端口被占用而服务器没有启动,我怎么能从我的代码中得到通知?
我发现当我的cherrypy 应用程序找不到开放端口时,它来自一个处于边缘状态的旧实例。所以在linux中我运行......
$sudo ps -ef| grep python
root 2579 1 1 07:52 ? 00:02:19 /opt/Python-3.2/python /var/www/html/app/webapp.py
然后...
$kill -9 2579
你可以在 python 中实现这一点,但它应该很少发生。如果您需要有关 Windows 的说明,请告诉我。
安德鲁
您可以在启动服务器之前验证端口:
import sys
import cherrypy as cp
from cherrypy.process.servers import check_port
class Root(object):
@cp.expose
def index(self):
return "Sample"
config = {'global': {'server.socket_port': 8080}}
cp.config.update(config)
port = cp.config.get('server.socket_port')
host = cp.config.get('server.socket_host', '127.0.0.1')
try:
check_port(host, port)
except IOError:
sys.stderr.write("The port %s is not free\n" % port)
sys.exit(-1)
else:
cp.quickstart(Root(), config=config)