Files
SupervisorAI/run.py

86 lines
1.8 KiB
Python

#!/usr/bin/env python3
"""
FastAPI应用启动脚本
"""
import uvicorn
import argparse
from config import settings
def main():
"""
主函数:解析命令行参数并启动服务器
"""
parser = argparse.ArgumentParser(description="algorithm service")
parser.add_argument(
"--host",
type=str,
default="0.0.0.0",
help="监听主机 (默认: 0.0.0.0)"
)
parser.add_argument(
"--port",
type=int,
default=8000,
help="监听端口 (默认: 8000)"
)
parser.add_argument(
"--reload",
action="store_true",
help="启用热重载 (开发模式)"
)
parser.add_argument(
"--workers",
type=int,
default=1,
help="工作进程数 (生产模式)"
)
parser.add_argument(
"--log-level",
type=str,
default="info",
choices=["debug", "info", "warning", "error", "critical"],
help="日志级别"
)
args = parser.parse_args()
# 根据环境选择配置
if settings.DEBUG:
print("🔧 开发模式")
uvicorn_config = {
"host": args.host,
"port": args.port,
"reload": True,
"log_level": "debug",
"workers": 1
}
else:
print("🚀 生产模式")
uvicorn_config = {
"host": args.host,
"port": args.port,
"reload": False,
"log_level": args.log_level,
"workers": args.workers
}
# 启动服务器
print(f"🌐 启动服务器: http://{args.host}:{args.port}")
print(f"📚 API文档: http://{args.host}:{args.port}/docs")
print(f"📊 健康检查: http://{args.host}:{args.port}/health")
uvicorn.run(
"app:app",
**uvicorn_config
)
if __name__ == "__main__":
main()