fix: b_td1_v3_scanner写candidates加database is locked重试(防15:01整点撞锁崩溃)

This commit is contained in:
xxm
2026-08-18 09:53:38 +08:00
parent a5452a89b1
commit e18cf7e76e
+22 -9
View File
@@ -95,15 +95,28 @@ def main():
f"rsi={sig['rsi']} ret5={sig['ret5']}% mcap_q={sig['mcap_q']} score={sig['score']}")
_mid_v = (sig['price'] * 0.98 + sig['price']) / 2
_rr_v = round((sig['target'] - _mid_v) / (_mid_v - sig['stop_loss']), 2) if _mid_v > sig['stop_loss'] > 0 else 0
conn.execute(
"INSERT INTO candidates (code, name, sector, reason, entry_range, stop_loss, target, rr, source_strategy, created_at) "
"VALUES (?,?,?,?,?,?,?,?,?,datetime('now','localtime')) "
"ON CONFLICT(code) DO UPDATE SET "
"name=excluded.name, sector=excluded.sector, reason=excluded.reason, "
"entry_range=excluded.entry_range, stop_loss=excluded.stop_loss, target=excluded.target, rr=excluded.rr, source_strategy=excluded.source_strategy",
(code, code, "b_td1_v3", reasons,
f"{sig['price']*0.98:.2f}~{sig['price']:.2f}", sig["stop_loss"], sig["target"], _rr_v, "b_td1_v3"))
inserted += 1
# 2026-08-18 database is locked 重试(整点调度撞锁致崩溃,工单P1)
import random as _rd
_w_ok = False
for _try in range(4):
try:
conn.execute(
"INSERT INTO candidates (code, name, sector, reason, entry_range, stop_loss, target, rr, source_strategy, created_at) "
"VALUES (?,?,?,?,?,?,?,?,?,datetime('now','localtime')) "
"ON CONFLICT(code) DO UPDATE SET "
"name=excluded.name, sector=excluded.sector, reason=excluded.reason, "
"entry_range=excluded.entry_range, stop_loss=excluded.stop_loss, target=excluded.target, rr=excluded.rr, source_strategy=excluded.source_strategy",
(code, code, "b_td1_v3", reasons,
f"{sig['price']*0.98:.2f}~{sig['price']:.2f}", sig["stop_loss"], sig["target"], _rr_v, "b_td1_v3"))
_w_ok = True
break
except Exception as _e:
if "locked" in str(_e).lower():
time.sleep(0.4 * (2 ** _try) + _rd.uniform(0, 0.2))
else:
raise
if _w_ok:
inserted += 1
print(f" 🟢 {code} {code}{sig['price']} score={sig['score']} {reasons}", flush=True)
conn.commit()
conn.close()