mirror of
https://github.com/jamiepine/voicebox.git
synced 2026-09-15 04:40:40 -07:00
Enhance server startup logging and error handling
- Implemented detailed logging for server startup in server.py, including Python version, executable path, and parsed arguments. - Added error handling for module imports and server initialization to improve robustness. - Introduced an Entitlements.plist file for macOS to manage security settings. - Updated tauri.conf.json to reference the new Entitlements.plist. - Enhanced error reporting in main.rs for better debugging during server process management.
This commit is contained in:
+71
-36
@@ -5,45 +5,80 @@ This module provides an entry point that works with PyInstaller by using
|
||||
absolute imports instead of relative imports.
|
||||
"""
|
||||
|
||||
import argparse
|
||||
import uvicorn
|
||||
import sys
|
||||
import logging
|
||||
|
||||
# Import the FastAPI app from the backend package
|
||||
from backend.main import app
|
||||
from backend import config, database
|
||||
# Set up logging FIRST, before any imports that might fail
|
||||
logging.basicConfig(
|
||||
level=logging.INFO,
|
||||
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
|
||||
stream=sys.stderr, # Log to stderr so it's captured by Tauri
|
||||
)
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
# Log startup immediately to confirm binary execution
|
||||
logger.info("=" * 60)
|
||||
logger.info("voicebox-server starting up...")
|
||||
logger.info(f"Python version: {sys.version}")
|
||||
logger.info(f"Executable: {sys.executable}")
|
||||
logger.info(f"Arguments: {sys.argv}")
|
||||
logger.info("=" * 60)
|
||||
|
||||
try:
|
||||
import argparse
|
||||
import uvicorn
|
||||
logger.info("Standard library imports successful")
|
||||
|
||||
# Import the FastAPI app from the backend package
|
||||
logger.info("Importing backend modules...")
|
||||
from backend.main import app
|
||||
from backend import config, database
|
||||
logger.info("Backend imports successful")
|
||||
except Exception as e:
|
||||
logger.error(f"Failed to import required modules: {e}", exc_info=True)
|
||||
sys.exit(1)
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser(description="voicebox backend server")
|
||||
parser.add_argument(
|
||||
"--host",
|
||||
type=str,
|
||||
default="127.0.0.1",
|
||||
help="Host to bind to (use 0.0.0.0 for remote access)",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--port",
|
||||
type=int,
|
||||
default=8000,
|
||||
help="Port to bind to",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--data-dir",
|
||||
type=str,
|
||||
default=None,
|
||||
help="Data directory for database, profiles, and generated audio",
|
||||
)
|
||||
args = parser.parse_args()
|
||||
try:
|
||||
parser = argparse.ArgumentParser(description="voicebox backend server")
|
||||
parser.add_argument(
|
||||
"--host",
|
||||
type=str,
|
||||
default="127.0.0.1",
|
||||
help="Host to bind to (use 0.0.0.0 for remote access)",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--port",
|
||||
type=int,
|
||||
default=8000,
|
||||
help="Port to bind to",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--data-dir",
|
||||
type=str,
|
||||
default=None,
|
||||
help="Data directory for database, profiles, and generated audio",
|
||||
)
|
||||
args = parser.parse_args()
|
||||
logger.info(f"Parsed arguments: host={args.host}, port={args.port}, data_dir={args.data_dir}")
|
||||
|
||||
# Set data directory if provided
|
||||
if args.data_dir:
|
||||
config.set_data_dir(args.data_dir)
|
||||
# Set data directory if provided
|
||||
if args.data_dir:
|
||||
logger.info(f"Setting data directory to: {args.data_dir}")
|
||||
config.set_data_dir(args.data_dir)
|
||||
|
||||
# Initialize database after data directory is set
|
||||
database.init_db()
|
||||
# Initialize database after data directory is set
|
||||
logger.info("Initializing database...")
|
||||
database.init_db()
|
||||
logger.info("Database initialized successfully")
|
||||
|
||||
uvicorn.run(
|
||||
app,
|
||||
host=args.host,
|
||||
port=args.port,
|
||||
log_level="info",
|
||||
)
|
||||
logger.info(f"Starting uvicorn server on {args.host}:{args.port}...")
|
||||
uvicorn.run(
|
||||
app,
|
||||
host=args.host,
|
||||
port=args.port,
|
||||
log_level="info",
|
||||
)
|
||||
except Exception as e:
|
||||
logger.error(f"Server startup failed: {e}", exc_info=True)
|
||||
sys.exit(1)
|
||||
|
||||
Reference in New Issue
Block a user