update pay function

This commit is contained in:
2025-11-26 09:06:02 +08:00
parent bef3e86f60
commit ce19881181

View File

@@ -130,14 +130,19 @@ class ClickHouseConnectionPool:
logger.info(f"ClickHouse 连接池初始化完成: pool_size={pool_size}, max_overflow={max_overflow}") logger.info(f"ClickHouse 连接池初始化完成: pool_size={pool_size}, max_overflow={max_overflow}")
def _init_pool(self): def _init_pool(self):
"""初始化连接池,预创建核心连接""" """初始化连接池,预创建部分核心连接(非阻塞)"""
for _ in range(self.pool_size): # 只预创建 2 个连接,其余按需创建
init_count = min(2, self.pool_size)
for i in range(init_count):
try: try:
conn = self._create_connection() conn = self._create_connection()
if conn: if conn:
self._pool.put(conn) self._pool.put(conn)
logger.info(f"预创建 ClickHouse 连接 {i+1}/{init_count} 成功")
except Exception as e: except Exception as e:
logger.warning(f"预创建 ClickHouse 连接失败: {e}") logger.warning(f"预创建 ClickHouse 连接失败 ({i+1}/{init_count}): {e}")
# 预创建失败不阻塞启动,后续按需创建
break
def _create_connection(self): def _create_connection(self):
"""创建新的 ClickHouse 连接""" """创建新的 ClickHouse 连接"""
@@ -325,19 +330,30 @@ class ClickHouseConnectionPool:
logger.info("ClickHouse 连接池已关闭所有连接") logger.info("ClickHouse 连接池已关闭所有连接")
# 初始化全局 ClickHouse 连接池 # 初始化全局 ClickHouse 连接池(懒加载模式)
clickhouse_pool = None
_pool_lock = Lock()
def _init_clickhouse_pool():
"""懒加载初始化 ClickHouse 连接池"""
global clickhouse_pool
if clickhouse_pool is None:
with _pool_lock:
if clickhouse_pool is None:
clickhouse_pool = ClickHouseConnectionPool( clickhouse_pool = ClickHouseConnectionPool(
host='222.128.1.157', host='222.128.1.157',
port=18000, port=18000,
user='default', user='default',
password='Zzl33818!', password='Zzl33818!',
database='stock', database='stock',
pool_size=10, # 核心连接数 pool_size=5, # 减少预创建连接数
max_overflow=15, # 最大溢出连接数,总共支持 25 并发 max_overflow=20, # 增加溢出连接数,总共支持 25 并发
connection_timeout=10, # 连接超时 10 秒 connection_timeout=10, # 连接超时 10 秒
query_timeout=30, # 查询超时 30 秒 query_timeout=30, # 查询超时 30 秒
health_check_interval=60 # 60 秒未使用的连接进行健康检查 health_check_interval=60 # 60 秒未使用的连接进行健康检查
) )
return clickhouse_pool
# ===================== ClickHouse 连接池实现结束 ===================== # ===================== ClickHouse 连接池实现结束 =====================
app = Flask(__name__) app = Flask(__name__)
Compress(app) Compress(app)
@@ -1421,7 +1437,7 @@ def update_investment_preferences():
def get_clickhouse_client(): def get_clickhouse_client():
""" """
获取 ClickHouse 客户端(使用连接池) 获取 ClickHouse 客户端(使用连接池,懒加载
返回连接池对象,支持两种使用方式: 返回连接池对象,支持两种使用方式:
@@ -1434,14 +1450,15 @@ def get_clickhouse_client():
with client.connection() as conn: with client.connection() as conn:
result = conn.execute("SELECT * FROM table") result = conn.execute("SELECT * FROM table")
""" """
return clickhouse_pool return _init_clickhouse_pool()
@app.route('/api/system/clickhouse-pool-status', methods=['GET']) @app.route('/api/system/clickhouse-pool-status', methods=['GET'])
def api_clickhouse_pool_status(): def api_clickhouse_pool_status():
"""获取 ClickHouse 连接池状态(仅供监控使用)""" """获取 ClickHouse 连接池状态(仅供监控使用)"""
try: try:
status = clickhouse_pool.get_pool_status() pool = _init_clickhouse_pool()
status = pool.get_pool_status()
return jsonify({ return jsonify({
'code': 200, 'code': 200,
'message': 'success', 'message': 'success',