个股论坛重做

This commit is contained in:
2026-01-06 14:17:26 +08:00
parent eb50b14b7b
commit 961d6482c2
3 changed files with 189 additions and 14 deletions

51
app.py
View File

@@ -8053,25 +8053,48 @@ def get_stock_quotes():
return jsonify({'success': False, 'error': str(e)}), 500
# ==================== ClickHouse 连接池(单例模式 ====================
# ==================== ClickHouse 连接池(带健康检查 ====================
_clickhouse_client = None
_clickhouse_client_lock = threading.Lock()
def _create_clickhouse_client():
"""创建新的 ClickHouse 客户端连接"""
return Cclient(
host='127.0.0.1',
port=9000,
user='default',
password='Zzl33818!',
database='stock',
settings={
'connect_timeout': 10,
'send_receive_timeout': 300,
}
)
def get_clickhouse_client():
"""获取 ClickHouse 客户端(单例模式,避免重复创建连接"""
"""获取 ClickHouse 客户端(带健康检查和自动重连"""
global _clickhouse_client
if _clickhouse_client is None:
with _clickhouse_client_lock:
if _clickhouse_client is None:
_clickhouse_client = Cclient(
host='127.0.0.1',
port=9000,
user='default',
password='Zzl33818!',
database='stock'
)
print("[ClickHouse] 创建新连接(单例)")
return _clickhouse_client
with _clickhouse_client_lock:
# 如果客户端不存在,创建新连接
if _clickhouse_client is None:
_clickhouse_client = _create_clickhouse_client()
print("[ClickHouse] 创建新连接")
return _clickhouse_client
# 健康检查:尝试执行简单查询
try:
_clickhouse_client.execute("SELECT 1")
except Exception as e:
print(f"[ClickHouse] 连接失效,正在重连: {e}")
try:
_clickhouse_client.disconnect()
except Exception:
pass
_clickhouse_client = _create_clickhouse_client()
print("[ClickHouse] 重连成功")
return _clickhouse_client
@app.route('/api/account/calendar/events', methods=['GET', 'POST'])