mmeb/start_web_app.py
2025-09-01 11:24:01 +00:00

131 lines
3.5 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
启动Web应用测试脚本
"""
import os
import sys
import logging
import subprocess
from pathlib import Path
# 设置日志
logging.basicConfig(level=logging.INFO, format='%(message)s')
logger = logging.getLogger(__name__)
def check_dependencies():
"""检查依赖包"""
logger.info("📦 检查依赖包...")
required_packages = [
'torch', 'transformers', 'numpy', 'PIL', 'flask', 'pymochow'
]
missing_packages = []
for package in required_packages:
try:
if package == 'PIL':
from PIL import Image
else:
__import__(package)
logger.info(f"{package}")
except ImportError:
missing_packages.append(package)
logger.error(f"{package} 未安装")
if missing_packages:
logger.info("安装缺失的包:")
for pkg in missing_packages:
if pkg == 'PIL':
logger.info("pip install Pillow")
elif pkg == 'pymochow':
logger.info("pip install pymochow")
else:
logger.info(f"pip install {pkg}")
return False
return True
def test_vdb_connection():
"""测试VDB连接"""
logger.info("🔗 测试百度VDB连接...")
try:
import pymochow
from pymochow.configuration import Configuration
from pymochow.auth.bce_credentials import BceCredentials
config = Configuration(
credentials=BceCredentials("root", "vdb$yjr9ln3n0td"),
endpoint="http://180.76.96.191:5287"
)
client = pymochow.MochowClient(config)
databases = client.list_databases()
client.close()
logger.info(f"✅ VDB连接成功发现 {len(databases)} 个数据库")
return True
except Exception as e:
logger.error(f"❌ VDB连接失败: {e}")
return False
def prepare_directories():
"""准备必要目录"""
logger.info("📁 准备目录...")
directories = ["uploads", "sample_images", "text_data", "templates"]
for dir_name in directories:
Path(dir_name).mkdir(exist_ok=True)
logger.info(f"{dir_name}")
def start_web_app():
"""启动Web应用"""
logger.info("🌐 启动Web应用...")
try:
# 设置环境变量
os.environ['FLASK_APP'] = 'web_app_vdb_production.py'
os.environ['FLASK_ENV'] = 'development'
# 启动Flask应用
logger.info("启动地址: http://localhost:5000")
logger.info("按 Ctrl+C 停止服务")
# 直接运行Python文件
subprocess.run([sys.executable, 'web_app_vdb_production.py'], check=True)
except KeyboardInterrupt:
logger.info("🛑 用户停止服务")
except Exception as e:
logger.error(f"❌ Web应用启动失败: {e}")
def main():
"""主函数"""
logger.info("🚀 启动多模态检索系统Web应用")
logger.info("=" * 50)
# 1. 检查依赖
if not check_dependencies():
logger.error("❌ 依赖包检查失败,请先安装缺失的包")
return False
# 2. 测试VDB连接
if not test_vdb_connection():
logger.error("❌ VDB连接失败请检查网络和配置")
return False
# 3. 准备目录
prepare_directories()
# 4. 启动Web应用
start_web_app()
return True
if __name__ == "__main__":
main()