【发布时间】:2015-05-26 20:54:28
【问题描述】:
我有一个经常运行以启动服务器的 CherryPy 脚本。今天我不得不启动和停止它几次以修复配置文件中的一些错误,我猜套接字并没有完全关闭,因为当我再次尝试启动它时,我遇到了这个问题:
[23/Mar/2015:14:08:00] ENGINE Listening for SIGHUP.
[23/Mar/2015:14:08:00] ENGINE Listening for SIGTERM.
[23/Mar/2015:14:08:00] ENGINE Listening for SIGUSR1.
[23/Mar/2015:14:08:00] ENGINE Bus STARTING
CherryPy Checker:
The Application mounted at '' has an empty config.
[23/Mar/2015:14:08:00] ENGINE Started monitor thread 'Autoreloader'.
[23/Mar/2015:14:08:00] ENGINE Started monitor thread '_TimeoutMonitor'.
[23/Mar/2015:14:08:00] ENGINE Error in HTTP server: shutting down
Traceback (most recent call last):
File "/home/andrew/virtualenvs/mikernels/lib/python2.7/site-packages/cherrypy/process/servers.py", line 188, in _start_http_thread
self.httpserver.start()
File "/home/andrew/virtualenvs/mikernels/lib/python2.7/site-packages/cherrypy/wsgiserver/wsgiserver2.py", line 1848, in start
raise socket.error(msg)
error: No socket could be created
我编辑了 CherryPy 的 wsgiserver2.py 以查看 socket.error 的详细信息,error.strerror 是
98 (98, 'Address already in use') Address already in use
同时我的套接字构造为:
af = 2
socktype = 1
proto = 6
canonname = ''
sa = ('0.0.0.0', 2112)
self.bind(af, socktype, proto)
(这不是确切的代码,但这就是触发错误时的值)
我检查了 netstat,但在 2112 端口上没有看到任何监听,可能是什么导致了问题,我该如何诊断它?
谢谢!
【问题讨论】: