From 09a3fddd87659b1ed3ea07027e7ea98aca21a03b Mon Sep 17 00:00:00 2001 From: DaanSelen <80752476+DaanSelen@users.noreply.github.com> Date: Tue, 14 Oct 2025 08:48:33 +0200 Subject: [PATCH] fix: alpine error suicide bug (#950) Co-authored-by: Daan Selen --- qodana.yaml | 6 ----- src/modules/SystemStatus.py | 47 +++++++++++++++++++++++++++---------- 2 files changed, 35 insertions(+), 18 deletions(-) delete mode 100644 qodana.yaml diff --git a/qodana.yaml b/qodana.yaml deleted file mode 100644 index bfca57a3..00000000 --- a/qodana.yaml +++ /dev/null @@ -1,6 +0,0 @@ -version: "1.0" -linter: jetbrains/qodana-python:2024.3 -profile: - name: qodana.recommended -include: - - name: CheckDependencyLicenses \ No newline at end of file diff --git a/src/modules/SystemStatus.py b/src/modules/SystemStatus.py index 46dd553c..54f85118 100644 --- a/src/modules/SystemStatus.py +++ b/src/modules/SystemStatus.py @@ -160,18 +160,41 @@ class Processes: self.CPU_Top_10_Processes: list[Process] = [] self.Memory_Top_10_Processes: list[Process] = [] def getData(self): - while True: - try: - processes = list(psutil.process_iter()) - self.CPU_Top_10_Processes = sorted( - list(map(lambda x : Process(x.name(), " ".join(x.cmdline()), x.pid, x.cpu_percent()), processes)), - key=lambda x : x.percent, reverse=True)[:20] - self.Memory_Top_10_Processes = sorted( - list(map(lambda x : Process(x.name(), " ".join(x.cmdline()), x.pid, x.memory_percent()), processes)), - key=lambda x : x.percent, reverse=True)[:20] - break - except Exception as e: - current_app.logger.error("Get processes error", e) + try: + processes = list(psutil.process_iter()) + + cpu_processes = [] + memory_processes = [] + + for proc in processes: + try: + name = proc.name() + cmdline = " ".join(proc.cmdline()) + pid = proc.pid + cpu_percent = proc.cpu_percent() + mem_percent = proc.memory_percent() + + # Create Process object for CPU and memory tracking + cpu_process = Process(name, cmdline, pid, cpu_percent) + mem_process = Process(name, cmdline, pid, mem_percent) + + cpu_processes.append(cpu_process) + memory_processes.append(mem_process) + + except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess): + # Skip processes we can’t access or that no longer exist + continue + + # Sort by CPU and memory usage (descending order) + cpu_sorted = sorted(cpu_processes, key=lambda p: p.percent, reverse=True) + mem_sorted = sorted(memory_processes, key=lambda p: p.percent, reverse=True) + + # Get top 20 processes for each + self.CPU_Top_10_Processes = cpu_sorted[:20] + self.Memory_Top_10_Processes = mem_sorted[:20] + + except Exception as e: + current_app.logger.error("Get processes error", e) def toJson(self): self.getData()