import uvicorn import os from dotenv import load_dotenv # Explicitly load .env file load_dotenv() def main(): host = os.getenv("HOST", "0.0.0.0") port = int(os.getenv("PORT", "8002")) # Allow passing RELOAD=true from env reload = os.getenv("RELOAD", "false").lower() in ("true", "1", "yes") print(f"Starting server on {host}:{port} (reload={reload})...") if reload: uvicorn.run( "app.main:app", host=host, port=port, reload=True, reload_excludes=[".venv", "uploads", "*.log"] ) else: # Standard production mode (no reload) with multiple workers # Note: uvicorn.run doesn't support multiple workers when passing the app object, # but it supports it when passing the import string "app.main:app" workers = int(os.getenv("WORKERS", "4")) uvicorn.run( "app.main:app", host=host, port=port, workers=workers ) if __name__ == "__main__": main()