Source code for nglview.scripts.app
from notebook.notebookapp import NotebookApp, random_ports
import socket
from tornado import httpserver
from itertools import chain
[docs]class NGLViewApp(NotebookApp):
[docs] def get_port(self, port=None):
# user-given port
uport = [port,] if port is not None else [self.port,]
def func():
return
self.http_server = httpserver.HTTPServer(func)
success = None
for port in chain(uport, random_ports(self.port, self.port_retries+1)):
try:
self.http_server.listen(port, self.ip)
except (OSError, socket.error):
pass
else:
self.port = port
success = True
break
if not success:
self.log.critical('ERROR: the notebook server could not be started because '
'no available port could be found.')
self.exit(1)
self.http_server.stop()
return self.port