为什么在通过Ctrl-C终止时,用sudo运行CherryPy有时会挂起?

为什么在通过Ctrl-C终止时,用sudo运行CherryPy有时会挂起?,cherrypy,Cherrypy,我发现,当我用sudo启动一个CherryPy服务器,然后尝试按Ctrl-C终止它时,它有时(大约三分之一的时间)会挂起。我可以使用CherryPy hello world复制这一点: import cherrypy class HelloWorld(object): def index(self): return "Hello World!" index.exposed = True cherrypy.quickstart(HelloWorld()) 我看到

我发现,当我用sudo启动一个CherryPy服务器,然后尝试按Ctrl-C终止它时,它有时(大约三分之一的时间)会挂起。我可以使用CherryPy hello world复制这一点:

import cherrypy
class HelloWorld(object):
    def index(self):
        return "Hello World!"
    index.exposed = True

cherrypy.quickstart(HelloWorld())
我看到的结果是:

$ sudo python hello.py 
[23/Nov/2012:21:23:03] ENGINE Listening for SIGHUP.
[23/Nov/2012:21:23:03] ENGINE Listening for SIGTERM.
[23/Nov/2012:21:23:03] ENGINE Listening for SIGUSR1.
[23/Nov/2012:21:23:03] ENGINE Bus STARTING
CherryPy Checker:
The Application mounted at '' has an empty config.

[23/Nov/2012:21:23:03] ENGINE Started monitor thread 'Autoreloader'.
[23/Nov/2012:21:23:03] ENGINE Started monitor thread '_TimeoutMonitor'.
[23/Nov/2012:21:23:04] ENGINE Serving on 127.0.0.1:8080
[23/Nov/2012:21:23:04] ENGINE Bus STARTED
^CTraceback (most recent call last):
  File "hello.py", line 7, in <module>
    cherrypy.quickstart(HelloWorld())
  File "/usr/local/lib/python2.7/site-packages/CherryPy-3.2.2-py2.7.egg/cherrypy/__init__.py", line 161, in quickstart
    engine.block()
  File "/usr/local/lib/python2.7/site-packages/CherryPy-3.2.2-py2.7.egg/cherrypy/process/wspbus.py", line 303, in block
    except (KeyboardInterrupt, IOError):
KeyboardInterrupt
<No subsequent command prompt>
$sudo python hello.py
[23/Nov/2012:21:23:03]发动机正在监听信号。
[23/Nov/2012:21:23:03]引擎正在侦听SIGTERM。
[23/Nov/2012:21:23:03]引擎正在侦听信号1。
[23/Nov/2012:21:23:03]发动机总线启动
樱桃色棋盘格:
在“”上装载的应用程序具有空配置。
[23/Nov/2012:21:23:03]引擎已启动监视器线程“Autoreloader”。
[23/Nov/2012:21:23:03]引擎已启动监视器线程“\u TimeoutMonitor”。
[23/Nov/2012:21:23:04]发动机服务于127.0.0.1:8080
[23/Nov/2012:21:23:04]发动机总线已启动
^CTraceback(最近一次通话最后一次):
文件“hello.py”,第7行,在
cherrypy.quickstart(HelloWorld())
文件“/usr/local/lib/python2.7/site packages/CherryPy-3.2.2-py2.7.egg/CherryPy/_init__.py”,第161行,在quickstart中
引擎块()
文件“/usr/local/lib/python2.7/site packages/CherryPy-3.2.2-py2.7.egg/CherryPy/process/wspbus.py”,第303行,在块中
除了(键盘中断,IOError):
键盘中断

这对我来说是一个问题,因为我想在端口80上运行我的服务器,并且我在其他线程中有一些东西需要正确清理。我想这对调试来说只是个麻烦,但我还是很好奇。

我和CherryPy讨论了这个问题。原来问题是我使用的sudo版本(1.7.4):

我使用最新版本(1.8.6p3)重新测试,不再存在此问题。多亏了克里斯·比尔比