Skip to content
Snippets Groups Projects

changed method to find jupyterlab base url for dash app

Merged Julian Rasch requested to merge jr662933/jupyterhub-ai:dev into dev
1 file
+ 23
2
Compare changes
  • Side-by-side
  • Inline
+ 23
2
@@ -4,13 +4,25 @@ sys.path.append("/home/jovyan/")
@@ -4,13 +4,25 @@ sys.path.append("/home/jovyan/")
import argparse
import argparse
import logging
import logging
 
from urllib.parse import urlparse, urljoin
 
from dash import Dash
from dash import Dash
 
from jupyter_server.serverapp import list_running_servers
 
from layout import layout
from layout import layout
from callbacks import register_callbacks
from callbacks import register_callbacks
logging.basicConfig(level=logging.INFO)
logging.basicConfig(level=logging.INFO)
 
# weird trick to find base_url for the jupyterlab
 
def find_jupyterlab_base_url():
 
servers = list_running_servers()
 
for server in servers:
 
if server["port"] == 8888:
 
return server['url']
 
return None
 
# get the correct port from proxy
# get the correct port from proxy
parser = argparse.ArgumentParser()
parser = argparse.ArgumentParser()
@@ -23,10 +35,19 @@ if not port:
@@ -23,10 +35,19 @@ if not port:
else:
else:
logging.debug(f"Dash app running on port {port}.")
logging.debug(f"Dash app running on port {port}.")
 
 
base_url = find_jupyterlab_base_url()
 
if base_url is None:
 
raise ValueError("Base URL of Jupyterlab could not be detected.")
 
logging.debug(f"Base URL: {base_url}")
 
 
proxy_base_path = urlparse(urljoin(base_url + "/", f"proxy/{port}/")).path
 
logging.debug(f"Proxy base path: {proxy_base_path}")
 
# define Dash app
# define Dash app
app = Dash(
app = Dash(
name=__name__,
name=__name__,
requests_pathname_prefix="/Dash/"
requests_pathname_prefix=proxy_base_path
)
)
# define layout
# define layout
@@ -39,6 +60,6 @@ register_callbacks(app=app)
@@ -39,6 +60,6 @@ register_callbacks(app=app)
app.run(
app.run(
jupyter_mode="jupyterlab",
jupyter_mode="jupyterlab",
port=port,
port=port,
host="localhost",
host="0.0.0.0",
debug=True
debug=True
)
)
Loading