import os import sys import signal import logging from pathlib import Path from dotenv import load_dotenv # Add the python directory to sys.path current_dir = Path(__file__).parent sys.path.insert(0, str(current_dir)) from application import Application from solver import Solver from kv import Cache # Load environment variables load_dotenv() # Configure logging logging.basicConfig( level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s' ) logger = logging.getLogger(__name__) def main(): logger.info("Logger initialized") # Get Redis address from environment redis_addr = os.getenv("REDIS_ADDR", "localhost:6379") # Initialize cache try: cache = Cache(redis_addr) logger.info("Cache initialized") except Exception as e: logger.error(f"Failed to initialize cache: {e}") raise # Initialize WASM solver try: solver = Solver() logger.info("WASM solver initialized") except Exception as e: logger.error(f"Failed to initialize WASM solver: {e}") raise # Create application app = Application(solver, cache) logger.info("Application initialized") def signal_handler(sig, frame): logger.info("Received signal, shutting down...") app.close() logger.info("Application stopped") exit(0) # Handle SIGINT and SIGTERM signal.signal(signal.SIGINT, signal_handler) signal.signal(signal.SIGTERM, signal_handler) logger.info("Application started on port 8080") app.run(host="0.0.0.0", port=8080, debug=False) if __name__ == "__main__": main()