diff --git a/src/lightning_app/components/serve/streamlit.py b/src/lightning_app/components/serve/streamlit.py index 1a325d60fecee..9b943a1708fa3 100644 --- a/src/lightning_app/components/serve/streamlit.py +++ b/src/lightning_app/components/serve/streamlit.py @@ -58,6 +58,7 @@ def run(self) -> None: ], env=env, ) + self._process.wait() def on_exit(self) -> None: if self._process is not None: diff --git a/src/lightning_app/core/app.py b/src/lightning_app/core/app.py index d9389ecd27e24..47055c70f7f4b 100644 --- a/src/lightning_app/core/app.py +++ b/src/lightning_app/core/app.py @@ -526,14 +526,11 @@ def _update_layout(self) -> None: component._layout = layout def _update_is_headless(self) -> None: - is_headless = _is_headless(self) + self.is_headless = _is_headless(self) # If `is_headless` changed, handle it. # This ensures support for apps which dynamically add a UI at runtime. - if self.is_headless != is_headless: - self.is_headless = is_headless - - _handle_is_headless(self) + _handle_is_headless(self) def _apply_restarting(self) -> bool: self._reset_original_state() diff --git a/src/lightning_app/utilities/app_helpers.py b/src/lightning_app/utilities/app_helpers.py index 665c50889676c..83b78e1929aa5 100644 --- a/src/lightning_app/utilities/app_helpers.py +++ b/src/lightning_app/utilities/app_helpers.py @@ -19,7 +19,7 @@ import websockets from deepdiff import Delta -from lightning_cloud.openapi import AppinstancesIdBody, Externalv1LightningappInstance +from lightning_cloud.openapi import AppinstancesIdBody, Externalv1LightningappInstance, V1LightningappInstanceState import lightning_app from lightning_app.utilities.exceptions import LightningAppStateException @@ -556,7 +556,12 @@ def _handle_is_headless(app: "LightningApp"): "App was not found. Please open an issue at https://github.com/lightning-AI/lightning/issues." ) - if current_lightningapp_instance.spec.is_headless == app.is_headless: + if any( + [ + current_lightningapp_instance.spec.is_headless == app.is_headless, + current_lightningapp_instance.status.phase != V1LightningappInstanceState.RUNNING, + ] + ): return current_lightningapp_instance.spec.is_headless = app.is_headless