import os from http.server import ThreadingHTTPServer from amc_server.context import DATA_DIR, PORT, generate_auth_token, start_projects_watcher from amc_server.handler import AMCHandler from amc_server.logging_utils import LOGGER, configure_logging, install_signal_handlers from amc_server.mixins.spawn import load_projects_cache def main(): configure_logging() DATA_DIR.mkdir(parents=True, exist_ok=True) LOGGER.info("Starting AMC server") # Initialize spawn feature load_projects_cache() generate_auth_token() start_projects_watcher() server = ThreadingHTTPServer(("127.0.0.1", PORT), AMCHandler) install_signal_handlers(server) LOGGER.info("AMC server listening on http://127.0.0.1:%s", PORT) # Write PID file pid_file = DATA_DIR / "server.pid" pid_file.write_text(str(os.getpid())) try: server.serve_forever() except KeyboardInterrupt: LOGGER.info("AMC server interrupted; shutting down") except Exception: LOGGER.exception("AMC server crashed") raise finally: pid_file.unlink(missing_ok=True) server.server_close() LOGGER.info("AMC server stopped")