def oauth_server(): # Start the OAuth server on a random port in the background server = HTTPServer(('', 0), OAuthHandler) server.url = 'http://{0}:{1}/'.format(*server.server_address) thread = threading.Thread(target=server.serve_forever) thread.start() try: yield server finally: server.shutdown() thread.join() server.server_close()
def oauth_server(): # Start the OAuth server on a random port in the background server = HTTPServer(('', 0), OAuthHandler) server.url = 'http://{0}:{1}/'.format(*server.server_address) thread = threading.Thread(target=server.serve_forever) thread.start() try: yield server finally: server.shutdown() thread.join() server.server_close()
def main(argv): args = argparser().parse_args(argv[1:]) httpd = HTTPServer(('localhost', args.port), RestOATaggerHandler) info('REST-OA tagger service started') try: httpd.serve_forever() except KeyboardInterrupt: pass info('REST-OA tagger service stopped') httpd.server_close() return 0
class AuthServer(QtCore.QObject): response = QtCore.pyqtSignal(dict) def __init__(self, *args, **kwds): super(AuthServer, self).__init__(*args, **kwds) self.server = HTTPServer(('127.0.0.1', 0), RequestHandler) self.port = self.server.server_port self.server.timeout = 1 self.server.response = self.response self.running = True @QtCore.pyqtSlot() @catch_all def start(self): while self.running: self.server.handle_request() self.server.server_close()
class SimpleWebServer(object): """A very basic web server.""" def __init__(self, host=DEFAULT_HOST, port=DEFAULT_PORT): self.stop_serving = False host = host port = port while True: try: self.server = HTTPServer( (host, port), HtmlOnlyHandler) self.host = host self.port = port break except socket.error: log.debug("port %d is in use, trying to next one" % port) port += 1 self.thread = threading.Thread(target=self._run_web_server) def _run_web_server(self): """Runs the server loop.""" log.debug("web server started") while not self.stop_serving: self.server.handle_request() self.server.server_close() def start(self): """Starts the server.""" self.thread.start() def stop(self): """Stops the server.""" self.stop_serving = True try: # This is to force stop the server loop URLopener().open("http://%s:%d" % (self.host, self.port)) except IOError: pass log.info("Shutting down the webserver") self.thread.join() def where_is(self, path): return "http://%s:%d/%s" % (self.host, self.port, path)
def authorise(self): with Busy(): # do full authentication procedure http_server = HTTPServer(('127.0.0.1', 0), AuthRequestHandler) redirect_uri = 'http://127.0.0.1:' + str(http_server.server_port) auth_url = self.session.get_auth_url(redirect_uri) if not auth_url: logger.error('Failed to get auth URL') http_server.server_close() return server = AuthServer() thread = QtCore.QThread(self) server.moveToThread(thread) server.server = http_server server.response.connect(self.auth_response) thread.started.connect(server.handle_requests) server.finished.connect(thread.quit) server.finished.connect(server.deleteLater) thread.finished.connect(thread.deleteLater) thread.start() if QtGui.QDesktopServices.openUrl(QtCore.QUrl(auth_url)): return logger.error('Failed to open web browser')
def server_close(self): self.socket.shutdown(socket.SHUT_RDWR) HTTPServer.server_close(self) self.__methods__.clear() log("httpd: server stopped")