Stoppable thread that runs a loopback http server.
| 55 | return (request, client_address) |
| 56 | |
| 57 | class LoopbackHttpServerThread(threading.Thread): |
| 58 | """Stoppable thread that runs a loopback http server.""" |
| 59 | |
| 60 | def __init__(self, request_handler): |
| 61 | threading.Thread.__init__(self) |
| 62 | self._stop_server = False |
| 63 | self.ready = threading.Event() |
| 64 | request_handler.protocol_version = "HTTP/1.0" |
| 65 | self.httpd = LoopbackHttpServer(("127.0.0.1", 0), |
| 66 | request_handler) |
| 67 | self.port = self.httpd.server_port |
| 68 | |
| 69 | def stop(self): |
| 70 | """Stops the webserver if it's currently running.""" |
| 71 | |
| 72 | self._stop_server = True |
| 73 | |
| 74 | self.join() |
| 75 | self.httpd.server_close() |
| 76 | |
| 77 | def run(self): |
| 78 | self.ready.set() |
| 79 | while not self._stop_server: |
| 80 | self.httpd.handle_request() |
| 81 | |
| 82 | # Authentication infrastructure |
| 83 |
no outgoing calls
searching dependent graphs…