|
@@ -2275,12 +2275,19 @@ class Gui:
|
|
|
|
|
|
def __init_ngrok(self):
|
|
|
app_config = self._config.config
|
|
|
- if app_config["run_server"] and app_config["ngrok_token"]: # pragma: no cover
|
|
|
+ if hasattr(self, "_ngrok"):
|
|
|
+ # Keep the ngrok instance if token has not changed
|
|
|
+ if app_config["ngrok_token"] == self._ngrok[1]:
|
|
|
+ _TaipyLogger._get_logger().info(f" * NGROK Public Url: {self._ngrok[0].public_url}")
|
|
|
+ return
|
|
|
+ # Close the old tunnel so new tunnel can open for new token
|
|
|
+ ngrok.disconnect(self._ngrok[0].public_url)
|
|
|
+ if app_config["run_server"] and (token := app_config["ngrok_token"]): # pragma: no cover
|
|
|
if not util.find_spec("pyngrok"):
|
|
|
raise RuntimeError("Cannot use ngrok as pyngrok package is not installed.")
|
|
|
- ngrok.set_auth_token(app_config["ngrok_token"])
|
|
|
- http_tunnel = ngrok.connect(app_config["port"], "http")
|
|
|
- _TaipyLogger._get_logger().info(f" * NGROK Public Url: {http_tunnel.public_url}")
|
|
|
+ ngrok.set_auth_token(token)
|
|
|
+ self._ngrok = (ngrok.connect(app_config["port"], "http"), token)
|
|
|
+ _TaipyLogger._get_logger().info(f" * NGROK Public Url: {self._ngrok[0].public_url}")
|
|
|
|
|
|
def __bind_default_function(self):
|
|
|
with self.get_flask_app().app_context():
|