price_monitor: 5min regenerate_all冷却 + 跳过冗余全量重评

This commit is contained in:
知微
2026-07-14 11:48:34 +08:00
parent d972553b6e
commit 377bb4d1e4
+26 -8
View File
@@ -646,15 +646,33 @@ def run_once(round_label=""):
# 如果有重评过的股票,更新 DB holding_strategies(此前写入 decisions.json,已废弃)
if reassesed_codes and HAS_REASSESS:
# ── 5分钟冷却:regenerate_all 开销太大,不每2分钟跑一次 ──
_regen_marker = "/tmp/price_monitor_regen_at"
_skip_regen = False
try:
# 重新 regenerate_all 只针对受影响的股票效率太低
# 直接全量重评(regenerate_all 内部会批量拉价格、做技术分析)
from strategy_lifecycle import regenerate_all
r = regenerate_all(stdout=False)
outputs.append(f" ✅ 策略已全量重评: {r.get('ok',0)}/{r.get('total',0)}成功")
outputs.append(f" 📌 触发股票: {', '.join(reassesed_codes)}")
except Exception as e:
outputs.append(f" ⚠️ 全量重评失败: {e}")
if os.path.exists(_regen_marker):
with open(_regen_marker) as _f:
_last_regen = float(_f.read().strip())
if time.time() - _last_regen < 300:
_skip_regen = True
except:
pass
if _skip_regen:
outputs.append(f" ⏭ 跳过全量重评(距上次<5min),下次再跑")
else:
try:
from strategy_lifecycle import regenerate_all
r = regenerate_all(stdout=False)
outputs.append(f" ✅ 策略已全量重评: {r.get('ok',0)}/{r.get('total',0)}成功")
outputs.append(f" 📌 触发股票: {', '.join(reassesed_codes)}")
try:
with open(_regen_marker, "w") as _f:
_f.write(str(time.time()))
except:
pass
except Exception as e:
outputs.append(f" ⚠️ 全量重评失败: {e}")
# === 第四步:输出 ===
now_str = datetime.now().strftime("%H:%M:%S")