fix: avoid SQLite lock on fast position poll by skipping DB writes
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+4
-3
@@ -33,6 +33,7 @@ from position_stream import position_hub, start_position_worker
|
||||
from ctp_reconnect import start_ctp_reconnect_worker
|
||||
from ctp_premarket_connect import start_ctp_premarket_connect_worker
|
||||
from ctp_fee_worker import start_ctp_fee_worker
|
||||
from db_conn import execute_retry
|
||||
from sl_tp_guard import (
|
||||
cancel_monitor_exit_orders,
|
||||
ensure_monitor_order_columns,
|
||||
@@ -480,7 +481,8 @@ def install_trading(app, *, login_required, require_nav, get_db, get_setting, se
|
||||
open_time_val = ctp_open
|
||||
elif ctp_open:
|
||||
open_time_val = ctp_open
|
||||
conn.execute(
|
||||
execute_retry(
|
||||
conn,
|
||||
"""UPDATE trade_order_monitors SET lots=?, entry_price=?,
|
||||
open_time=? WHERE id=?""",
|
||||
(
|
||||
@@ -684,7 +686,7 @@ def install_trading(app, *, login_required, require_nav, get_db, get_setting, se
|
||||
break
|
||||
elif key in ctp_by_key:
|
||||
used_ctp_keys.add(key)
|
||||
if ctp and mon:
|
||||
if ctp and mon and not fast:
|
||||
_sync_monitor_lots_from_ctp(
|
||||
conn, int(mon["id"]), mon.get("symbol") or "",
|
||||
mon.get("direction") or "long", mode, ctp=ctp,
|
||||
@@ -896,7 +898,6 @@ def install_trading(app, *, login_required, require_nav, get_db, get_setting, se
|
||||
try:
|
||||
init_strategy_tables(conn)
|
||||
payload = _build_trading_live_payload(conn, fast=True)
|
||||
conn.commit()
|
||||
position_hub.set_snapshot(payload)
|
||||
return jsonify(payload)
|
||||
finally:
|
||||
|
||||
Reference in New Issue
Block a user