在python中,SIGINT不可捕获

2024-10-02 10:23:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试关闭我的服务器,这样我就可以完全捕获我的事件了。但是,当我测试这个时,我从来没有在调试器中点击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}$

Tags: runselflocalhosthostparsermakesignalserver

热门问题