How to stop BaseHTTPServer.serve_forever() in a BaseHTTPRequestHandler subclass?

后端 未结 10 1210
渐次进展
渐次进展 2020-12-01 04:53

I am running my HTTPServer in a separate thread (using the threading module which has no way to stop threads...) and want to stop serving requests when the main

10条回答
  •  悲&欢浪女
    2020-12-01 05:47

    This is a simplified version of Helgi's answer for python 3.7:

    import threading
    import time
    from http.server import ThreadingHTTPServer, SimpleHTTPRequestHandler
    
    
    class MyServer(threading.Thread):
        def run(self):
            self.server = ThreadingHTTPServer(('localhost', 8000), SimpleHTTPRequestHandler)
            self.server.serve_forever()
        def stop(self):
            self.server.shutdown()
    
    
    if __name__ == '__main__':
        s = MyServer()
        s.start()
        print('thread alive:', s.is_alive())  # True
        time.sleep(2)
        s.stop()
        print('thread alive:', s.is_alive())  # False
    

提交回复
热议问题