diff --git a/library/python/pysandesh/sandesh_base.py b/library/python/pysandesh/sandesh_base.py index 2d40cc8c..34b76a0f 100644 --- a/library/python/pysandesh/sandesh_base.py +++ b/library/python/pysandesh/sandesh_base.py @@ -126,6 +126,9 @@ def uninit(self): def kill_httpd(self): if self._gev_httpd: try: + self._http_server.stop_http_server() + self._http_server = None + gevent.sleep(0) self._gev_httpd.kill() except Exception as e: self._logger.debug(str(e)) diff --git a/library/python/pysandesh/sandesh_http.py b/library/python/pysandesh/sandesh_http.py index 9c62ba67..db8c683f 100644 --- a/library/python/pysandesh/sandesh_http.py +++ b/library/python/pysandesh/sandesh_http.py @@ -78,6 +78,7 @@ def __init__(self, sandesh, module, port, pkg_list): self._jquery_collapse_storage_js_path = None self._jquery_collapse_js_path = None self._jquery_1_8_1_js_path = None + self._svr = None try: imp_pysandesh = __import__('pysandesh') except ImportError: @@ -95,18 +96,25 @@ def __init__(self, sandesh, module, port, pkg_list): #end __init__ + def stop_http_server(self): + if self._svr: + self._svr.shutdown() + self._svr = None + self._logger.error('Stopped http server') + def start_http_server(self): try: - svr = make_server(SandeshHttp._HTTP_SERVER_IP, self._http_port, - self._http_app, SandeshWSGIServer) + self._svr = make_server(SandeshHttp._HTTP_SERVER_IP, + self._http_port, + self._http_app, SandeshWSGIServer) except socket.error as e: self._logger.error('Unable to open HTTP Port %d, %s' % (self._http_port, e)) sys.exit() - self._http_port = svr.server_port + self._http_port = self._svr.server_port self._logger.error('Starting Introspect on HTTP Port %d' % self._http_port) self._sandesh.record_port("http", self._http_port) - svr.allow_reuse_address = True - svr.serve_forever() + self._svr.allow_reuse_address = True + self._svr.serve_forever() #end start_http_server