| |
| """ |
| Main entry point for FaceForge application |
| """ |
|
|
| import os |
| import logging |
| import sys |
| import traceback |
|
|
| |
| logging.basicConfig( |
| level=logging.DEBUG, |
| format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', |
| handlers=[logging.StreamHandler(sys.stdout)] |
| ) |
|
|
| logger = logging.getLogger("faceforge") |
|
|
| def main(): |
| """Main function to start the FaceForge application.""" |
| try: |
| |
| logger.info("Applying Gradio patch...") |
| try: |
| from patch_gradio_utils import apply_patch |
| if apply_patch(): |
| logger.info("Gradio patch applied successfully.") |
| else: |
| logger.warning("Failed to apply Gradio patch. The app may encounter errors.") |
| except Exception as e: |
| logger.warning(f"Error applying Gradio patch: {e}") |
| logger.debug(traceback.format_exc()) |
| |
| |
| logger.info("Setting up FastAPI application with API and UI") |
| from fastapi import FastAPI |
| from fastapi.middleware.cors import CORSMiddleware |
| import gradio as gr |
| |
| |
| from faceforge_api.main import app as api_app |
| from faceforge_ui.app import create_demo |
| |
| |
| app = FastAPI(title="FaceForge") |
| |
| |
| app.add_middleware( |
| CORSMiddleware, |
| allow_origins=["*"], |
| allow_credentials=True, |
| allow_methods=["*"], |
| allow_headers=["*"], |
| ) |
| |
| |
| logger.info("Mounting API at /api") |
| app.mount("/api", api_app) |
| |
| |
| logger.info("Creating Gradio UI") |
| demo = create_demo() |
| |
| |
| logger.info("Mounting Gradio UI") |
| gr_app = gr.mount_gradio_app(app, demo, path="/") |
| |
| |
| import uvicorn |
| port = int(os.environ.get("PORT", 7860)) |
| logger.info(f"Starting integrated server on port {port}") |
| uvicorn.run(app, host="0.0.0.0", port=port) |
| |
| except ImportError as e: |
| logger.critical(f"Import error: {e}. Please check your dependencies.") |
| logger.debug(traceback.format_exc()) |
| sys.exit(1) |
| except Exception as e: |
| logger.critical(f"Unexpected error: {e}") |
| logger.debug(traceback.format_exc()) |
| sys.exit(1) |
|
|
| if __name__ == "__main__": |
| main() |