#!/usr/bin/env python3 """mofin_collect.py — MoFin 数据采集链 每轮盯盘 cron 前运行,顺序执行: 1. market_watch — 拉90个行业板块数据 2. trend_detector — 检测17种信号 3. xiaoguo_news_processor — 搜新闻+小果分析 """ import subprocess, sys, time from pathlib import Path BASE = Path(__file__).parent.parent if "hermes" in str(Path(__file__).resolve()) else Path(__file__).parent SCRIPTS = [ ("market_watch.py", 60), ("trend_detector.py", 10), ("xiaoguo_news_processor.py", 60), ] for script, timeout in SCRIPTS: path = BASE / script if not path.exists(): path = Path("/home/hmo/MoFin") / script print(f"--- {script} ---", flush=True) start = time.time() try: result = subprocess.run( [sys.executable, str(path)], capture_output=True, text=True, timeout=timeout ) elapsed = time.time() - start if result.returncode == 0: print(f"OK ({elapsed:.0f}s)", flush=True) if result.stdout.strip(): for line in result.stdout.strip().split("\n")[-3:]: print(f" {line}", flush=True) else: print(f"FAIL ({elapsed:.0f}s): {result.stderr[:200]}", flush=True) except subprocess.TimeoutExpired: print(f"TIMEOUT ({timeout}s)", flush=True) except Exception as e: print(f"ERROR: {e}", flush=True) print("采集链完成", flush=True)