更新ios

This commit is contained in:
2026-01-18 18:10:32 +08:00
parent 1d24650fe4
commit efce85f4f9

95
app.py
View File

@@ -8432,46 +8432,69 @@ def get_clickhouse_client():
return _clickhouse_client return _clickhouse_client
# ==================== 高频五档数据 ClickHouse 连接池222.128.1.157 ==================== # ==================== 高频五档数据 ClickHouse HTTP 客户端222.128.1.157:18123 ====================
_realtime_clickhouse_client = None class RealtimeClickHouseHTTP:
_realtime_clickhouse_client_lock = threading.Lock() """
使用 HTTP 协议连接 ClickHouse端口 18123
因为 222.128.1.157 只开放了 HTTP 端口,未开放原生协议端口 9000
"""
def __init__(self, host='222.128.1.157', port=18123, user='default', password='Zzl33818!', database='stock'):
self.base_url = f'http://{host}:{port}'
self.user = user
self.password = password
self.database = database
def _create_realtime_clickhouse_client(): def execute(self, query, params=None):
"""创建高频五档数据 ClickHouse 客户端连接222.128.1.157""" """执行 SQL 查询,返回结果列表"""
return Cclient( # 替换参数占位符
host='222.128.1.157', if params:
port=9000, # 原生协议端口(非 HTTP 18123 for key, value in params.items():
user='default', placeholder = f'%({key})s'
password='Zzl33818!', if isinstance(value, str):
database='stock', query = query.replace(placeholder, f"'{value}'")
settings={ elif isinstance(value, (list, tuple)):
'connect_timeout': 10, # 列表参数
'send_receive_timeout': 60, if all(isinstance(v, str) for v in value):
} values_str = ', '.join(f"'{v}'" for v in value)
) else:
values_str = ', '.join(str(v) for v in value)
def get_realtime_clickhouse_client(): query = query.replace(placeholder, f"({values_str})")
"""获取高频五档数据 ClickHouse 客户端(带健康检查和自动重连)""" elif isinstance(value, date):
global _realtime_clickhouse_client query = query.replace(placeholder, f"'{value.isoformat()}'")
else:
with _realtime_clickhouse_client_lock: query = query.replace(placeholder, str(value))
if _realtime_clickhouse_client is None:
_realtime_clickhouse_client = _create_realtime_clickhouse_client()
print("[ClickHouse-Realtime] 创建新连接 (222.128.1.157)")
return _realtime_clickhouse_client
try: try:
_realtime_clickhouse_client.execute("SELECT 1") response = requests.post(
except Exception as e: self.base_url,
print(f"[ClickHouse-Realtime] 连接失效,正在重连: {e}") params={
try: 'database': self.database,
_realtime_clickhouse_client.disconnect() 'user': self.user,
except Exception: 'password': self.password,
pass 'default_format': 'JSONCompact',
_realtime_clickhouse_client = _create_realtime_clickhouse_client() },
print("[ClickHouse-Realtime] 重连成功") data=query.encode('utf-8'),
timeout=30,
)
response.raise_for_status()
return _realtime_clickhouse_client if response.text.strip():
result = response.json()
return result.get('data', [])
return []
except requests.exceptions.RequestException as e:
print(f"[ClickHouse-HTTP] 请求失败: {e}")
raise
_realtime_clickhouse_http = None
def get_realtime_clickhouse_client():
"""获取高频五档数据 ClickHouse HTTP 客户端"""
global _realtime_clickhouse_http
if _realtime_clickhouse_http is None:
_realtime_clickhouse_http = RealtimeClickHouseHTTP()
print("[ClickHouse-HTTP] 创建 HTTP 客户端 (222.128.1.157:18123)")
return _realtime_clickhouse_http
@app.route('/api/account/calendar/events', methods=['GET', 'POST']) @app.route('/api/account/calendar/events', methods=['GET', 'POST'])