"""CLI script to start the FastAPI server.""" import sys from pathlib import Path import argparse import uvicorn # Add project root to path project_root = Path(__file__).parent.parent sys.path.insert(0, str(project_root)) from mlpipeline.logging.logger import get_logger logger = get_logger(__name__) def main(): """Start the FastAPI server.""" parser = argparse.ArgumentParser(description="Start AutoML API server") parser.add_argument( "--host", type=str, default="0.0.0.0", help="Host to bind (default: 0.0.0.0)" ) parser.add_argument( "--port", type=int, default=8000, help="Port to bind (default: 8000)" ) parser.add_argument( "--reload", action="store_true", help="Enable auto-reload for development" ) args = parser.parse_args() try: logger.info(f"🚀 Starting FastAPI server at {args.host}:{args.port}") logger.info(f"📚 API docs: http://{args.host if args.host != '0.0.0.0' else 'localhost'}:{args.port}/docs") uvicorn.run( "app.main:app", host=args.host, port=args.port, reload=args.reload ) return 0 except Exception as e: logger.error(f"❌ Server failed to start: {e}") return 1 if __name__ == "__main__": exit(main())