crowdata / app.py
YOSOYYONOSOYOTRO's picture
Upload folder using huggingface_hub
f2de3e6 verified
Raw
History Blame Contribute Delete
1.62 kB
import os
import sys
import subprocess
import logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger("hf_app")
# Satisfy Hugging Face ZeroGPU check if ZeroGPU hardware is selected
try:
import spaces
@spaces.GPU(duration=1)
def _zero_gpu_init():
return True
_zero_gpu_init()
logger.info("ZeroGPU check satisfied.")
except Exception as e:
logger.info(f"ZeroGPU check skipped: {e}")
# Ensure Playwright browser binaries are installed
try:
logger.info("Verificando/instalando Playwright Chromium...")
subprocess.run([sys.executable, "-m", "playwright", "install", "chromium"], check=False)
except Exception as e:
logger.warning(f"Advertencia al instalar Playwright Chromium: {e}")
import gradio as gr
from app.main import app as fastapi_app
# Interfaz de Gradio
with gr.Blocks(title="CrowData API Backend") as gradio_ui:
gr.Markdown("# 🦅 CrowData API Backend")
gr.Markdown("El backend de CrowData (FastAPI) está ejecutándose correctamente en Hugging Face Spaces con 16 GB RAM.")
gr.Markdown("### 🔗 Accesos Directos:")
gr.Markdown("- 📄 [Documentación de la API (Swagger UI)](/docs)")
gr.Markdown("- 🩺 [Health Check](/api/health)")
# Montar la interfaz de Gradio en /gradio sobre la app de FastAPI
app = gr.mount_gradio_app(fastapi_app, gradio_ui, path="/gradio")
# Exportar 'demo' apuntando a 'app' para que el ejecutor de Hugging Face Gradio Spaces lo sirva directamente
demo = app
if __name__ == "__main__":
import uvicorn
port = int(os.environ.get("PORT", 7860))
uvicorn.run(app, host="0.0.0.0", port=port)