From 3ab73805a3f9f73d3c105d51a0c4458ac31145cd Mon Sep 17 00:00:00 2001 From: Your Name Date: Wed, 8 Jul 2026 13:28:47 +0800 Subject: [PATCH] mail --- collect.py | 11 ++++++----- instance/palladium.db | Bin 15360 -> 20480 bytes 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/collect.py b/collect.py index 27f8d29..450247e 100644 --- a/collect.py +++ b/collect.py @@ -1,3 +1,4 @@ +from typing import List, Dict, Tuple, Set, Any, Optional, Union #!/usr/bin/env python3 """ collect.py — Palladium Z1 远程数据采集推送脚本 @@ -46,7 +47,7 @@ DEFAULT_RETRY_DELAY = 5 class Logger: """同时输出到 stderr 和可选的日志文件。""" - def __init__(self, log_file: str | None = None): + def __init__(self, log_file: Optional[str] = None): self.log_file = log_file def _emit(self, level: str, msg: str, ts: str) -> None: @@ -73,7 +74,7 @@ class Logger: # ═══════════════════════════════════════════════════════════════════════════ # Command Execution # ═══════════════════════════════════════════════════════════════════════════ -def build_shell_cmd(cmd: str, env_script: str | None) -> str: +def build_shell_cmd(cmd: str, env_script: Optional[str]) -> str: """ 如果指定了 env_script,把 source env 之后再执行 cmd 拼成一个 shell 串。 不指定则直接返回 cmd。 @@ -90,7 +91,7 @@ def shlex_quote(s: str) -> str: return "'" + s.replace("'", "'\\''") + "'" -def run_test_server(cmd: str, timeout: int, env_script: str | None) -> tuple[str, int, str]: +def run_test_server(cmd: str, timeout: int, env_script: Optional[str]) -> Tuple[str, int, str]: """ 执行 test_server -short, 返回 (stdout, returncode, stderr)。 timeout 触发时 subprocess.run 不会抛 (>=3.12 subprocessing 时可能抛), 这里显式处理。 @@ -101,7 +102,7 @@ def run_test_server(cmd: str, timeout: int, env_script: str | None) -> tuple[str full_cmd, shell=True, executable="/bin/bash", - capture_output=True, + stdout=subprocess.PIPE, stderr=subprocess.PIPE, timeout=timeout, ) except subprocess.TimeoutExpired as e: @@ -120,7 +121,7 @@ def run_test_server(cmd: str, timeout: int, env_script: str | None) -> tuple[str # ═══════════════════════════════════════════════════════════════════════════ def push_to_monitor(url: str, raw_output: str, source: str, retries: int, retry_delay: int, - log: Logger) -> tuple[bool, dict | None, str]: + log: Logger) -> Tuple[bool, Optional[Dict], str]: """带重试的 HTTP 推送, 返回 (ok, json_body_or_None, error_msg)。""" payload = {"raw_output": raw_output, "source": source} last_err = "" diff --git a/instance/palladium.db b/instance/palladium.db index 75c4e219f401ed14ed11e73c6c883f19aeb32111..d45360cfb595570dd5d3089029c15af90ad8e784 100644 GIT binary patch delta 1448 zcmZ{kO>7%Q7(i#{TifeoMeW$z_$N-b>n4t4JD%9yP3$13k)n#KxS+ZS1XAiIK|*zj zo0i`wB@rAbr#gc;aN9O(hLw2FiT<8P@H7%|d3dEcA$ zj@PT*esB9rdM)W2B7{V{*0Xe|clJ8yj5G-Bl16vuxzgtjGf6!)nTr>{iBqaGrsF8_ zl3U>O1-@W$r&e-njyqeKFFA7+aXXNnIMq1$d}C>4z1?10xjfr>|JbFK3mslwy6|?p zb$NY5X#6$5x2FFFKhHF|fsoh@Z0HPb5%>je^~3rNNRLCE{{NL&3hF`ebs%B*4GI0n#h?+Ce^A(x!xg{r zXXyNZ;&iz#e&z7Y5%w$lo_)bK*a>FSeR_v}MX%5^G*5xtCq42BS?=y+%}g;Q?>eRN z_@RFW)5b*0h?<#MwIsb#P)ouqd9}p7l2c2}D>F)gQLkjxa@Z@=YB9Z%QA^Y-Q)-EL zWl}98vY3&hGU&mBH)j}qTJb~ZZN&%CA5pxH-co!3{elO9FJ3xi zMyJLU5BNPv#WU%nk;w#x;DM*X^Ktb0fBbGp^HaD>;I4e%{Roi^m&^YBFo|X3@ZT6- B=BWSx delta 120 zcmZozz}QeRL7J75fq{X4qJljm=f;F3%xsLzlNgvMZ5HI{V4ggQy$HyE#K8P$vmnn6 zW)@jyN6yKs*rhhPu&^v<5#V5!VD6mEE@8N_F_3w4r*t(B2NSa;19J