Spaces:
Sleeping
Sleeping
| """ | |
| HuggingFace Spaces entry point for ChatCal.ai | |
| Minimal changes - uses JWT sessions instead of Redis | |
| """ | |
| import os | |
| import sys | |
| import uvicorn | |
| from datetime import datetime | |
| # Add the current directory to Python path for imports | |
| sys.path.insert(0, '/app') | |
| # Set HF-specific environment variables | |
| os.environ.setdefault("SESSION_BACKEND", "jwt") | |
| os.environ.setdefault("APP_ENV", "production") | |
| os.environ.setdefault("APP_PORT", "7860") # HF Spaces default port | |
| # Import after setting up the path | |
| from app.api.main import app | |
| if __name__ == "__main__": | |
| # Setup enhanced dual logging (stdout + file) | |
| from app.core.logging_config import setup_enhanced_logging, setup_breakpoint_debugging | |
| # Enable DEBUG level for comprehensive logging | |
| log_level = os.environ.get("LOG_LEVEL", "DEBUG") | |
| log_file = setup_enhanced_logging(log_level=log_level, log_file="/tmp/app.log") | |
| setup_breakpoint_debugging() | |
| import logging | |
| logger = logging.getLogger("app.startup") | |
| port = int(os.environ.get("PORT", os.environ.get("APP_PORT", 7860))) | |
| logger.info(f"π Starting ChatCal.ai VoiceCal-ai-v1 on port {port}") | |
| logger.info(f"π§ Session Backend: {os.environ.get('SESSION_BACKEND', 'unknown')}") | |
| logger.info(f"π Environment: {os.environ.get('APP_ENV', 'unknown')}") | |
| logger.info(f"π Log file: {log_file}") | |
| logger.info(f"π SSH debugging available via Dev Mode") | |
| # Additional startup diagnostics (removed sensitive key logging for security) | |
| try: | |
| # Add startup delay to prevent rapid restart loops | |
| import time | |
| time.sleep(2) # Give HF Spaces time to stabilize | |
| uvicorn.run( | |
| app, | |
| host="0.0.0.0", | |
| port=port, | |
| log_level="warning", # Reduce uvicorn noise, our dual logger handles app logs | |
| access_log=False, # Reduce access log spam | |
| reload=False, # Never use reload in production | |
| workers=1 # Single worker for HF Spaces | |
| ) | |
| except Exception as e: | |
| logger.critical(f"π₯ Application startup failed: {e}") | |
| raise |