#!/usr/bin/env python # -*- coding: utf-8 -*- from http.server import ThreadingHTTPServer from threading import Thread from time import sleep class MyApplication(Thread): def __init__(self, port: int = 8080, handler=None): super().__init__(target=self.application_endpoint) self.port: int = port self.httpServer = ThreadingHTTPServer(("", port), handler) def application_endpoint(self): print("serving at port", self.port) self.httpServer.serve_forever() def stop(self): print("stop listening at port", self.port) self.httpServer.server_close() if __name__ == "__main__": # start server to handle oauth callback request application_endpoint = MyApplication() # start server handler into new thread application_endpoint.start() sleep(2.0) print("stop application") application_endpoint.stop() print("wait application thread") application_endpoint.join()