fix: 修复 market.py 北交所映射缺失和 analysis.py 3处连接泄漏

- market.py:488: 补充北交所(8/9开头)腾讯API代码映射
- analysis.py: ai_analyze_stream 获取数据 put_db 移到 finally,初始化 conn=None
- analysis.py: ai_analyze_stream AI日志 put_db 移到 finally,初始化 _conn=None
- analysis.py: ai_analyze 获取资金流向 put_db 移到 finally,初始化 conn=None
This commit is contained in:
freedakgmail
2026-07-22 07:38:34 +08:00
parent c5df676af6
commit 6a33fd534e
2 changed files with 14 additions and 6 deletions
+12 -4
View File
@@ -340,6 +340,7 @@ def ai_analyze_stream(stock_code):
stock_name = get_stock_name(stock_code) or stock_code
# 获取资金流向和技术信号
conn = None
try:
conn = get_db()
if conn:
@@ -384,12 +385,14 @@ def ai_analyze_stream(stock_code):
stock_data['indicators'] = scan_row['indicators'] or {}
stock_data['triggered_count'] = scan_row['triggered_count'] or 0
cur2.close()
put_db(conn)
except Exception as e:
print(f"获取数据失败: {e}")
finally:
if conn:
put_db(conn)
# 记录AI调用日志
_conn = None
try:
from flask import session as _sess
_uid = _sess.get('user_id')
@@ -400,9 +403,11 @@ def ai_analyze_stream(stock_code):
_cur.execute("INSERT INTO ai_call_log (user_id, stock_code, stock_name) VALUES (%s, %s, %s)",
(_uid, stock_code, stock_name))
_conn.commit()
put_db(_conn)
except Exception:
pass
finally:
if _conn:
put_db(_conn)
# 流式调用AI
for chunk in analyze_stock_stream(stock_code, stock_name, stock_data):
@@ -447,6 +452,7 @@ def ai_analyze(stock_code):
stock_name = get_stock_name(stock_code) or stock_code
# 获取近三日资金流向
conn = None
try:
conn = get_db()
if conn:
@@ -468,9 +474,11 @@ def ai_analyze(stock_code):
'super_pct': float(row[3]) if row[3] else 0,
})
stock_data['fund_flow_3days'] = fund_flow
put_db(conn)
except Exception as e:
print(f"获取资金流向失败: {e}")
finally:
if conn:
put_db(conn)
# 调用AI分析
result = analyze_stock(stock_code, stock_name, stock_data)
+1 -1
View File
@@ -485,7 +485,7 @@ def get_fundamental(stock_code):
# 备用方案:先试腾讯API,再试akshare
try:
import requests as _rq
_tc = ('sh' if stock_code.startswith('6') else 'sz') + stock_code
_tc = ('sh' if stock_code.startswith('6') else 'bj' if stock_code.startswith(('8', '9')) else 'sz') + stock_code
_rr = _rq.get(f'http://qt.gtimg.cn/q={_tc}', timeout=5,
headers={'Referer': 'https://finance.qq.com'})
if _rr.status_code == 200 and '\"' in _rr.text: