diff --git a/stock-html/routes/sim_trade.py b/stock-html/routes/sim_trade.py
index e0f981e..1ad05b6 100644
--- a/stock-html/routes/sim_trade.py
+++ b/stock-html/routes/sim_trade.py
@@ -648,15 +648,22 @@ def trigger_trade():
# 降级: 使用旧引擎
from services.scheduler import execute_auto_trade_for_user
- conn = get_db()
- if conn:
- cur = conn.cursor(cursor_factory=RealDictCursor)
- cur.execute("SELECT trade_quantity FROM sim_config WHERE user_id = %s", (user_id,))
- config = cur.fetchone()
- trade_quantity = config['trade_quantity'] if config else 1000
- put_db(conn)
- else:
+ conn = None
+ try:
+ conn = get_db()
+ if conn:
+ cur = conn.cursor(cursor_factory=RealDictCursor)
+ cur.execute("SELECT trade_quantity FROM sim_config WHERE user_id = %s", (user_id,))
+ config = cur.fetchone()
+ trade_quantity = config['trade_quantity'] if config else 1000
+ else:
+ trade_quantity = 1000
+ except Exception as e:
+ print(f"[trigger_trade] 获取交易配置失败: {e}")
trade_quantity = 1000
+ finally:
+ if conn:
+ put_db(conn)
result = execute_auto_trade_for_user(user_id, trade_quantity)
diff --git a/stock-html/services/scheduler.py b/stock-html/services/scheduler.py
index 01061aa..c14ef69 100644
--- a/stock-html/services/scheduler.py
+++ b/stock-html/services/scheduler.py
@@ -514,19 +514,22 @@ def job_morning_trade():
for user in users:
user_id = user['user_id']
# 尝试使用智能引擎
+ smart_conn = None
try:
from services.smart_trade_engine import execute_smart_trade
from db import get_db, put_db
- conn = get_db()
- if conn:
- result = execute_smart_trade(conn, user_id, scan_date=None)
- put_db(conn)
+ smart_conn = get_db()
+ if smart_conn:
+ result = execute_smart_trade(smart_conn, user_id, scan_date=None)
if result.get('success'):
print(f"[定时任务] 用户{user_id} 智能引擎执行成功 "
f"(算法:{result.get('algo','?')}, 信号:{result.get('signals',0)})")
continue
except Exception as e:
print(f"[定时任务] 用户{user_id} 智能引擎异常,降级到旧引擎: {e}")
+ finally:
+ if smart_conn:
+ put_db(smart_conn)
# 降级:使用旧引擎
trade_quantity = user.get('trade_quantity') or 1000
@@ -553,18 +556,21 @@ def job_afternoon_trade():
for user in users:
user_id = user['user_id']
# 尝试使用智能引擎
+ smart_conn = None
try:
from services.smart_trade_engine import execute_smart_trade
from db import get_db, put_db
- conn = get_db()
- if conn:
- result = execute_smart_trade(conn, user_id, scan_date=today)
- put_db(conn)
+ smart_conn = get_db()
+ if smart_conn:
+ result = execute_smart_trade(smart_conn, user_id, scan_date=today)
if result.get('success'):
print(f"[定时任务] 用户{user_id} 午后智能引擎执行成功")
continue
except Exception as e:
print(f"[定时任务] 用户{user_id} 智能引擎异常,降级: {e}")
+ finally:
+ if smart_conn:
+ put_db(smart_conn)
trade_quantity = user.get('trade_quantity') or 1000
execute_auto_trade_for_user(user_id, trade_quantity, scan_date=today)