price_monitor: 5min regenerate_all冷却 + 跳过冗余全量重评
This commit is contained in:
@@ -646,13 +646,31 @@ 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:
|
||||
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:
|
||||
# 重新 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)}")
|
||||
try:
|
||||
with open(_regen_marker, "w") as _f:
|
||||
_f.write(str(time.time()))
|
||||
except:
|
||||
pass
|
||||
except Exception as e:
|
||||
outputs.append(f" ⚠️ 全量重评失败: {e}")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user