57 lines
1.8 KiB
Python
57 lines
1.8 KiB
Python
"""
|
||
BigDataTool - 主应用文件
|
||
模块化重构后的主应用,使用分离的模块组织代码
|
||
"""
|
||
|
||
import logging
|
||
from flask import Flask
|
||
|
||
# 导入模块
|
||
from modules.database import ensure_database
|
||
from modules.query_logger import QueryLogCollector, CollectorHandler
|
||
from modules.api_routes import setup_routes
|
||
|
||
# 创建Flask应用
|
||
app = Flask(__name__)
|
||
|
||
# 配置日志
|
||
logging.basicConfig(
|
||
level=logging.INFO,
|
||
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
|
||
)
|
||
logger = logging.getLogger(__name__)
|
||
|
||
# 确保数据库存在
|
||
if not ensure_database():
|
||
logger.error("数据库初始化失败,应用可能无法正常工作")
|
||
else:
|
||
logger.info("数据库初始化成功")
|
||
|
||
# 创建查询日志收集器
|
||
query_log_collector = QueryLogCollector()
|
||
|
||
# 设置日志处理器,将应用日志记录到查询日志中
|
||
collector_handler = CollectorHandler(query_log_collector)
|
||
collector_handler.setLevel(logging.INFO)
|
||
|
||
# 为特定的logger添加收集器
|
||
cassandra_logger = logging.getLogger('modules.cassandra_client')
|
||
query_logger = logging.getLogger('modules.query_engine')
|
||
comparison_logger = logging.getLogger('modules.data_comparison')
|
||
sharding_logger = logging.getLogger('modules.sharding')
|
||
|
||
cassandra_logger.addHandler(collector_handler)
|
||
query_logger.addHandler(collector_handler)
|
||
comparison_logger.addHandler(collector_handler)
|
||
sharding_logger.addHandler(collector_handler)
|
||
|
||
# 设置所有路由
|
||
setup_routes(app, query_log_collector)
|
||
|
||
if __name__ == '__main__':
|
||
logger.info("=== BigDataTool 启动 ===")
|
||
logger.info("应用架构:模块化")
|
||
logger.info("支持功能:单表查询、分表查询、多主键查询、配置管理、查询历史")
|
||
logger.info("访问地址:http://localhost:5001")
|
||
logger.info("API文档:/api/* 路径下的所有端点")
|
||
app.run(debug=True, port=5001) |