我正在尝试关闭我的服务器,这样我就可以完全捕获我的事件了。但是,当我测试这个时,我从来没有在调试器中点击stop方法,并且我得到一个unclosed socket警告来确认这一点。我错过了什么。在
class CFMServer(ServerAdapter):
def run(self, handler):
from wsgiref.simple_server import make_server, WSGIRequestHandler
self.server = make_server(self.host, self.port, handler, **self.options)
# set signal handlers
signal.signal(signal.SIGINT, self.stop)
signal.signal(signal.SIGTERM, self.stop)
try:
self.server.serve_forever()
except KeyboardInterrupt:
self.stop()
raise
def stop(self):
pdb.set_trace()
manager.save()
self.server.server_close()
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument('port', metavar='P', type=int,
help='Port to assign the server in localhost')
args = parser.parse_args()
port = args.port
server = CFMServer(host='localhost', port=port)
service.run(server=server, debug=True)
当我中断时,这是shell的输出。在
^{pr2}$
您的
stop
方法没有实现Python信号处理程序签名。而不是编写一个helper函数:
^{pr2}$相关问题 更多 >
编程相关推荐