File size: 1,624 Bytes
4223796
 
 
 
 
 
 
 
f2de3e6
 
 
 
 
 
 
 
 
 
 
4223796
 
 
 
 
 
 
 
 
 
ef00091
 
4223796
 
 
ef00091
4223796
 
ef00091
 
 
 
 
4223796
 
 
 
ef00091
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
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)