From 9e2c3de52027c9099b61a360f01cf1972325637d Mon Sep 17 00:00:00 2001 From: Julian <julian@edyoucated.org> Date: Mon, 11 Mar 2024 22:59:48 +0100 Subject: [PATCH] changed method to find jupyterlab base url for dash app --- app/app.py | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/app/app.py b/app/app.py index 604849e..b43ae3a 100644 --- a/app/app.py +++ b/app/app.py @@ -4,13 +4,25 @@ sys.path.append("/home/jovyan/") import argparse import logging +from urllib.parse import urlparse, urljoin + from dash import Dash +from jupyter_server.serverapp import list_running_servers + from layout import layout from callbacks import register_callbacks 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 parser = argparse.ArgumentParser() @@ -23,10 +35,19 @@ if not port: else: 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 app = Dash( name=__name__, - requests_pathname_prefix="/Dash/" + requests_pathname_prefix=proxy_base_path ) # define layout @@ -39,6 +60,6 @@ register_callbacks(app=app) app.run( jupyter_mode="jupyterlab", port=port, - host="localhost", + host="0.0.0.0", debug=True ) -- GitLab