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