def server_close(self): """ Properly initiate closing handshakes on all websockets when the WSGI server terminates. """ print "closing sockets" _WSGIServer.server_close(self)
def run(create_publisher, host='', port=80, handler_class=RequestHandler): """Runs a Quixote application using the simple server from wsgiref.""" publisher = create_publisher() app = QWIP(publisher) server = WSGIServer((host, port), handler_class) server.set_app(app) try: server.serve_forever() finally: server.server_close()
def server_close(self): """ Properly initiate closing handshakes on all websockets when the WSGI server terminates. """ if hasattr(self, 'manager'): self.manager.close_all() self.manager.stop() self.manager.join() delattr(self, 'manager') _WSGIServer.server_close(self)
class _HTTPServer(bottle.ServerAdapter): """ Reimplement bottle's WSGIRefServer. Override the request handler class and add a stop() method for cleanly shutting down the server. """ srv = None app = None def run(self, handler): # Handle the TIME_WAIT state for quick server restarts WSGIServer.allow_reuse_address = 1 # Create the server and start it self.srv = WSGIServer((self.host, self.port), _HTTPRequestHandler) self.srv.set_app(self.app) try: self.srv.serve_forever() finally: self.srv.server_close() def stop(self): if self.srv: self.srv.shutdown()