Spaces:
Paused
Paused
| import uvicorn | |
| import os | |
| import sys | |
| import logging | |
| from dotenv import load_dotenv | |
| # Load environment variables from .env file | |
| load_dotenv() | |
| # --- Unified Logging Configuration --- | |
| # Determine the project's base directory (assuming main.py is in 'api' subdirectory) | |
| # Adjust if your structure is different, e.g., if main.py is at the root. | |
| # This assumes 'api/main.py', so logs will be in 'api/logs/application.log' | |
| LOG_DIR = os.path.join(os.path.dirname(os.path.abspath(__file__)), "logs") | |
| os.makedirs(LOG_DIR, exist_ok=True) | |
| LOG_FILE_PATH = os.path.join(LOG_DIR, "application.log") | |
| logging.basicConfig( | |
| level=logging.INFO, | |
| format="%(asctime)s - %(lineno)d %(filename)s:%(funcName)s - %(levelname)s - %(message)s", | |
| handlers=[ | |
| logging.FileHandler(LOG_FILE_PATH), | |
| logging.StreamHandler(), # Also keep logging to console | |
| ], | |
| force=True, # Ensure this configuration takes precedence and clears any existing handlers | |
| ) | |
| # Get a logger for this main module (optional, but good practice) | |
| logger = logging.getLogger(__name__) | |
| # Add the current directory to the path so we can import the api package | |
| sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | |
| # Check for required environment variables | |
| required_env_vars = ["GOOGLE_API_KEY", "OPENAI_API_KEY"] | |
| missing_vars = [var for var in required_env_vars if not os.environ.get(var)] | |
| if missing_vars: | |
| logger.warning(f"Missing environment variables: {', '.join(missing_vars)}") | |
| logger.warning("Some functionality may not work correctly without these variables.") | |
| if __name__ == "__main__": | |
| # Get port from environment variable or use default | |
| # port = int(os.environ.get("PORT", 8001)) | |
| port = 8002 | |
| # Import the app here to ensure environment variables are set first | |
| from api.api import app | |
| logger.info(f"Starting Streaming API on port {port}") | |
| # Run the FastAPI app with uvicorn | |
| uvicorn.run("api.api:app", host="0.0.0.0", port=port, reload=True) | |