80 lines
2.1 KiB
Python
80 lines
2.1 KiB
Python
import os
|
|
import sys
|
|
import logging
|
|
from pathlib import Path
|
|
from app import app
|
|
from config import Config
|
|
from training import TrainingDataManager
|
|
|
|
# Ensuring the backend directory is in the system path
|
|
backend_dir = Path(__file__).parent
|
|
sys.path.insert(0, str(backend_dir))
|
|
|
|
# Configure logging
|
|
logging.basicConfig(
|
|
level=getattr(logging, Config.LOG_LEVEL),
|
|
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
|
|
)
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
def setup_environment():
|
|
"""Set up the application environment."""
|
|
try:
|
|
# Validate and create required directories
|
|
Config.validate_paths()
|
|
|
|
# Initialize training data manager
|
|
training_manager = TrainingDataManager()
|
|
|
|
# Log training data statistics
|
|
stats = training_manager.get_training_statistics()
|
|
logger.info(f"Training data loaded: {stats}")
|
|
|
|
# Validate training data
|
|
validation = training_manager.validate_training_data()
|
|
logger.info(f"Training data validation: {validation}")
|
|
|
|
return True
|
|
|
|
except Exception as e:
|
|
logger.error(f"Error setting up environment: {e}")
|
|
return False
|
|
|
|
|
|
def main():
|
|
"""Main application entry point."""
|
|
logger.info("Starting Memory Module Detection API")
|
|
|
|
# Set up environment
|
|
if not setup_environment():
|
|
logger.error("Failed to set up environment")
|
|
sys.exit(1)
|
|
|
|
# Display configuration
|
|
logger.info(f"Server configuration:")
|
|
logger.info(f" - Host: {Config.HOST}")
|
|
logger.info(f" - Port: {Config.PORT}")
|
|
logger.info(f" - Debug: {Config.DEBUG}")
|
|
logger.info(f" - Algorithm: {Config.ALGORITHM}")
|
|
logger.info(f" - Max file size: {Config.MAX_CONTENT_LENGTH} bytes")
|
|
|
|
# Start the Flask application
|
|
try:
|
|
app.run(
|
|
host=Config.HOST,
|
|
port=Config.PORT,
|
|
debug=Config.DEBUG,
|
|
threaded=True
|
|
)
|
|
except KeyboardInterrupt:
|
|
logger.info("Application stopped by user")
|
|
except Exception as e:
|
|
logger.error(f"Application error: {e}")
|
|
sys.exit(1)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|