update DB table

This commit is contained in:
2025-12-28 03:15:12 +01:00
parent 414042cb2b
commit 69be5dfe52

View File

@@ -32,8 +32,8 @@ def update_json_status(queue_id, task_id, status, result=None):
import datetime
import time
def run_command_with_logging(cmd, log_file, cwd=None, env=None, timeout=1800):
"""Runs a command, logs output to file and stdout with ISO timestamps and levels."""
def run_command_with_logging(cmd, log_file, cwd=None, env=None, timeout=1800, stop_string=None):
"""Runs a command, logs output, and optionally stops when a string is found."""
if env is None:
env = os.environ.copy()
if cwd is None:
@@ -88,6 +88,20 @@ def run_command_with_logging(cmd, log_file, cwd=None, env=None, timeout=1800):
f.write(log_line)
f.flush()
# Check for stop string
if stop_string and stop_string in line:
iso_now = datetime.datetime.now().isoformat()
stop_msg = f"[{iso_now}] [INFO] Stop string '{stop_string}' detected. Terminating process.\n"
print(stop_msg, end="")
f.write(stop_msg)
f.flush()
process.terminate()
try:
process.wait(timeout=5)
except subprocess.TimeoutExpired:
process.kill()
return 0
return process.returncode
except Exception as e:
iso_now = datetime.datetime.now().isoformat()
@@ -122,10 +136,10 @@ def run_worker():
checkout_cmd = f"./TPF/gitea_repo_controller.sh checkout {queue.source}"
run_command_with_logging(checkout_cmd, queue_log)
# 1-5 Build software
# Explicitly use /bin/bash to avoid shell mismatch
# 1-5 Build software and run QEMU
# We stop when we see the multicore app start message
build_cmd = f"/bin/bash -c 'source $HOME/esp/esp-idf/export.sh && cd TPF/Sensor_hub_repo && idf.py build && idf.py qemu'"
run_command_with_logging(build_cmd, queue_log)
run_command_with_logging(build_cmd, queue_log, stop_string="cpu_start: Multicore app")
# 9- Loop for each task
tasks = db.query(models.Task).filter(models.Task.queue_id == queue.id, models.Task.status == "Waiting").all()