diff --git a/notebook/notebookapp.py b/notebook/notebookapp.py index 74202aa45..dc7c84c57 100755 --- a/notebook/notebookapp.py +++ b/notebook/notebookapp.py @@ -443,7 +443,7 @@ def shutdown_server(server_info, timeout=5, log=None): """ from tornado import gen from tornado.httpclient import AsyncHTTPClient, HTTPClient, HTTPRequest - from tornado.netutil import bind_unix_socket, Resolver + from tornado.netutil import Resolver url = server_info['url'] pid = server_info['pid'] resolver = None @@ -524,7 +524,15 @@ class NbserverStopApp(JupyterApp): def _shutdown_or_exit(self, target_endpoint, server): print("Shutting down server on %s..." % target_endpoint) - if not self.shutdown_server(server): + server_stopped = self.shutdown_server(server) + if not server_stopped and sys.platform.startswith('win'): + # the pid check on Windows appears to be unreliable, so fetch another + # list of servers and ensure our server is not in the list before + # sending the wrong impression. + servers = list(list_running_servers(self.runtime_dir)) + if server not in servers: + server_stopped = True + if not server_stopped: sys.exit("Could not stop server on %s" % target_endpoint) @staticmethod