个股论坛重做
This commit is contained in:
51
app.py
51
app.py
@@ -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'])
|
||||
|
||||
Reference in New Issue
Block a user