You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

87 lines
2.3 KiB

#!/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()