From fbad1938f1fe983250dccda1a908c67aeec64dcf Mon Sep 17 00:00:00 2001 From: hmo Date: Wed, 22 Jul 2026 08:26:32 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A4=B1=E8=B4=A5=E4=BA=8C=E8=BD=AE?= =?UTF-8?q?=E9=87=8D=E8=AF=95(=E4=BC=91=E6=81=AF60s=E5=90=8E=E5=A4=B1?= =?UTF-8?q?=E8=B4=A5=E8=82=A1=E6=95=B4=E4=BD=93=E9=87=8D=E8=B7=91)=20+=20s?= =?UTF-8?q?ync=E8=84=9A=E6=9C=AC=E8=A1=A57=E4=B8=AA=E5=88=86=E5=8F=89?= =?UTF-8?q?=E5=89=AF=E6=9C=AC=E7=A1=AC=E9=93=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- deploy/profile-scripts/batch_reassess.py | 19 +++++++++++++++++++ .../profile-scripts/sync_profile_scripts.sh | 5 +++++ 2 files changed, 24 insertions(+) diff --git a/deploy/profile-scripts/batch_reassess.py b/deploy/profile-scripts/batch_reassess.py index 75f2ec32..450eee54 100644 --- a/deploy/profile-scripts/batch_reassess.py +++ b/deploy/profile-scripts/batch_reassess.py @@ -510,6 +510,7 @@ def main(): ok = 0 fail = 0 skip = 0 + failed_codes = [] for i, code in enumerate(codes): if has_llm_analysis(code) and not analysis_stale(code, force_today): print(f" [{i+1}/{len(codes)}] \u23ed {code} 已有12维分析且未过期") @@ -521,12 +522,30 @@ def main(): ok += 1 else: fail += 1 + failed_codes.append(code) # 间隔8秒(pro model较重但gateway可承受;retry逻辑吸收瞬断) if i < len(codes) - 1: print(f" 等待8秒...", flush=True) time.sleep(8) + # ── 失败二轮:主跑结束后休息 60s 让上游恢复,失败股整体重试一次 ── + # (凌晨上游空输出高发,二轮可救回大半;仍失败的留给下一轮调度) + if failed_codes: + print(f"\n{'='*50}") + print(f"失败二轮: {len(failed_codes)}只,休息60s后重试...") + time.sleep(60) + retry_ok = 0 + for code in failed_codes: + print(f" [retry] {code} ", end="", flush=True) + if process_stock(code, force_today): + retry_ok += 1 + ok += 1 + fail -= 1 + print(f" 等待8秒...", flush=True) + time.sleep(8) + print(f"失败二轮: {retry_ok}/{len(failed_codes)} 救回") + print(f"\n{'='*50}") print(f"完成: {ok}成功, {fail}失败, {skip}跳过") print(f"{'='*50}") diff --git a/deploy/profile-scripts/sync_profile_scripts.sh b/deploy/profile-scripts/sync_profile_scripts.sh index 5d8d3349..47088c3a 100644 --- a/deploy/profile-scripts/sync_profile_scripts.sh +++ b/deploy/profile-scripts/sync_profile_scripts.sh @@ -24,6 +24,11 @@ for lib in mofin_db.py mo_data.py; do fi done +# ── cron 脚本分叉副本(scripts/ 旧副本)→ 硬链到 deploy/profile-scripts canonical ── +for f in verify_reassess_pipeline.py batch_reassess.py stale_detector.py fix_gateway_port.py morning_health_check.py candidate_filter.py per_stock_reassess.py; do + [ -f "$SRC/$f" ] && ln -f "$SRC/$f" "$ROOT/scripts/$f" 2>/dev/null || true +done + echo "synced $count scripts (hardlink)" mkdir -p /home/hmo/MoFin/gateway/logs echo "$(date '+%F %T') synced $count scripts" >> /home/hmo/MoFin/gateway/logs/link_sync.log \ No newline at end of file