From d4860c8aedad48d8bf95c4a10ecb8296e81bcf65 Mon Sep 17 00:00:00 2001 From: Kiara Grouwstra Date: Sat, 12 Apr 2025 14:08:55 +0200 Subject: [PATCH] switch subprocess output to logger --- panel/src/panel/settings.py | 4 ++++ panel/src/panel/views.py | 10 ++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/panel/src/panel/settings.py b/panel/src/panel/settings.py index 91aa5824..27398b47 100644 --- a/panel/src/panel/settings.py +++ b/panel/src/panel/settings.py @@ -223,6 +223,10 @@ LOGGING = { }, } +SECONDS_PER_MINUTE = 60 +DEPLOY_TIMEOUT_MINUTES = 25 +DEPLOY_TIMEOUT_SECONDS = DEPLOY_TIMEOUT_MINUTES * SECONDS_PER_MINUTE + # Customization via user settings # This must be at the end, as it must be able to override the above # TODO(@fricklerhandwerk): diff --git a/panel/src/panel/views.py b/panel/src/panel/views.py index 9615b035..96279c8c 100644 --- a/panel/src/panel/views.py +++ b/panel/src/panel/views.py @@ -1,6 +1,7 @@ from enum import Enum import json from os.path import expanduser +from subprocess import Popen, PIPE, STDOUT import subprocess import logging import os @@ -160,6 +161,11 @@ class DeploymentStatus(ConfigurationForm): "--auto-approve", "-lock=false", ] - deployment_result = subprocess.run(cmd, cwd=cwd, env=env) - logging.info(deployment_result) + popen = Popen(cmd, cwd=cwd, env=env, stdout=PIPE, stderr=STDOUT) + with popen.stdout: + for line in iter(popen.stdout.readline, b''): + logger.info(line.decode('utf-8').strip()) + # FIXME catch subprocess.TimeoutExpired + deployment_result = popen.wait(timeout=settings.DEPLOY_TIMEOUT_SECONDS) + logger.info(f"deployment_result: {deployment_result}") return deployment_result, deployment_params