From 386caab840291ecab50ec0ec334ef814756541a6 Mon Sep 17 00:00:00 2001 From: Ziad-I <68874104+Ziad-I@users.noreply.github.com> Date: Thu, 18 Jul 2024 23:00:52 +0300 Subject: [PATCH] move intial opening of browser to server on startup event as a band aid fix to handle race condition between starting server and opening of web browser --- src/blenderbim/blenderbim/bim/data/webui/sioserver.py | 6 ++++++ src/blenderbim/blenderbim/tool/web.py | 5 ++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/blenderbim/blenderbim/bim/data/webui/sioserver.py b/src/blenderbim/blenderbim/bim/data/webui/sioserver.py index a109fe5260..b848a230cf 100644 --- a/src/blenderbim/blenderbim/bim/data/webui/sioserver.py +++ b/src/blenderbim/blenderbim/bim/data/webui/sioserver.py @@ -1,5 +1,6 @@ import sys import os +import webbrowser blenderbim_path = os.environ.get("blenderbim_path") if blenderbim_path: @@ -119,10 +120,15 @@ async def gantt(request): return web.Response(text=html_content, content_type="text/html") +async def open_web_browser(app): + webbrowser.open(f"http://127.0.0.1:{sio_port}/") + + app.router.add_get("/", index) app.router.add_get("/gantt", gantt) app.router.add_static("/jsgantt/", path="../gantt", name="jsgantt") app.router.add_static("/static/", path="./static", name="static") +app.on_startup.append(open_web_browser) def main(): diff --git a/src/blenderbim/blenderbim/tool/web.py b/src/blenderbim/blenderbim/tool/web.py index 2b53516ec2..b4b2ffb7ab 100644 --- a/src/blenderbim/blenderbim/tool/web.py +++ b/src/blenderbim/blenderbim/tool/web.py @@ -84,7 +84,10 @@ class Web(blenderbim.core.tool.Web): ws_process = subprocess.Popen( [sys.executable, ws_path, "--p", str(port), "--host", "127.0.0.1"], cwd=webui_path, env=env ) - cls.open_web_browser(port) + # moved intial opening of web browser to server on startup event + # to handle race condition between starting server and openning browser + # TODO: a better way to handle race condition + # cls.open_web_browser(port) cls.set_is_running(True) @classmethod