fix: b_td1_v3_scanner写candidates加database is locked重试(防15:01整点撞锁崩溃)
This commit is contained in:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user