Python 如果端口被占用,Cherrypy missing errorevent

Python 如果端口被占用,Cherrypy missing errorevent,python,cherrypy,Python,Cherrypy,如果我启动了cherrypy服务器,但端口被占用,我没有找到任何方法来了解它: import cherrypy try: cherrypy.quickstart() print "Message1" except: print "Message2" 进口樱桃 尝试: cherrypy.quickstart() 打印“消息1” 除: 打印“消息2” 。正如我在pdb中看到的,它分叉了另一个实例,这个新实例将失败(返回回溯),我看不到任何了解它的机会。我的打印行也没有打印出

如果我启动了cherrypy服务器,但端口被占用,我没有找到任何方法来了解它:

import cherrypy try: cherrypy.quickstart() print "Message1" except: print "Message2" 进口樱桃 尝试: cherrypy.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的说明,请告诉我


Andrew

您可以在启动服务器之前验证端口:

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)