#!/usr/bin/env python3 """ TermControlAgent 启动脚本 """ import warnings import sys import os import argparse from app.core.app import create_app, create_development_app, create_production_app from app.core.config import config from app.utils.log import get_enhanced_logger, LogLevel # 忽略paramiko的弃用警告 warnings.filterwarnings("ignore", category=DeprecationWarning, module="paramiko") logger = get_enhanced_logger(__name__, LogLevel.INFO) def main(): """主函数""" parser = argparse.ArgumentParser(description="TermControlAgent 启动脚本") parser.add_argument( "--env", choices=["development", "production", "test"], default="development", help="运行环境 (默认: development)" ) parser.add_argument( "--host", default=config.host, help=f"监听地址 (默认: {config.host})" ) parser.add_argument( "--port", type=int, default=config.port, help=f"监听端口 (默认: {config.port})" ) parser.add_argument( "--reload", action="store_true", default=config.debug, help="启用热重载 (开发环境默认启用)" ) parser.add_argument( "--workers", type=int, default=1, help="工作进程数 (默认: 1)" ) args = parser.parse_args() try: logger.info("启动TermControlAgent", environment=args.env, host=args.host, port=args.port, reload=args.reload) # 根据环境创建应用 if args.env == "development": app = create_development_app() elif args.env == "production": app = create_production_app() else: app = create_app(environment=args.env) # 启动服务器 import uvicorn uvicorn.run( app, host=args.host, port=args.port, reload=args.reload, workers=args.workers if args.workers > 1 else None ) except KeyboardInterrupt: logger.info("收到中断信号,正在关闭服务...") except Exception as e: logger.error("启动失败", error=str(e)) sys.exit(1) if __name__ == "__main__": main()