Curinha commited on
Commit
149c25a
·
1 Parent(s): 7814ee2

Enhance FastAPI app with custom documentation URL and add status endpoint

Browse files
Files changed (1) hide show
  1. app.py +25 -22
app.py CHANGED
@@ -5,29 +5,29 @@ import uvicorn
5
  from sound_generator import generate_sound, generate_music
6
  from fastapi import FastAPI, HTTPException
7
  from fastapi.middleware.cors import CORSMiddleware
8
- from fastapi.responses import FileResponse
9
  from pydantic import BaseModel
10
 
11
- # Create the FastAPI app
12
- app = FastAPI()
13
 
14
-
15
- # Configuración de CORS para permitir solicitudes desde cualquier origen
16
  app.add_middleware(
17
  CORSMiddleware,
18
- allow_origins=[
19
- "*"
20
- ], # Permitir todos los orígenes (puedes restringirlo a tus orígenes específicos)
21
  allow_credentials=True,
22
- allow_methods=["*"], # Permitir todos los métodos HTTP (GET, POST, OPTIONS, etc.)
23
- allow_headers=["*"], # Permitir todos los encabezados
24
  )
25
 
26
-
27
  # Define a Pydantic model to handle the input prompt
28
  class AudioRequest(BaseModel):
29
  prompt: str
30
 
 
 
 
 
31
 
32
  @app.post("/generate-sound/")
33
  async def generate_sound_endpoint(request: AudioRequest):
@@ -49,7 +49,6 @@ async def generate_sound_endpoint(request: AudioRequest):
49
  except Exception as e:
50
  raise HTTPException(status_code=500, detail=str(e))
51
 
52
-
53
  @app.post("/generate-music/")
54
  async def generate_music_endpoint(request: AudioRequest):
55
  try:
@@ -70,20 +69,24 @@ async def generate_music_endpoint(request: AudioRequest):
70
  except Exception as e:
71
  raise HTTPException(status_code=500, detail=str(e))
72
 
 
 
73
 
74
- # Crear interfaz de Gradio separadamente
75
- with gr.Blocks() as demo:
76
  gr.Markdown("# API de Sonidos Generativos")
77
  gr.Markdown("Bienvenido al servicio de generación de sonidos mediante IA.")
78
- gr.Markdown(
79
- "Esta API está disponible para uso a través de los siguientes endpoints:"
80
- )
81
- gr.Markdown("- Generar sonido: `/generate-sound/`")
82
- gr.Markdown("- Generar música: `/generate-music/`")
83
- gr.Markdown("- Documentación de la API: `/docs`")
84
-
85
- # Montar Gradio en FastAPI - IMPORTANTE: esto debe hacerse antes de iniciar el servidor
86
  app = gr.mount_gradio_app(app, demo, path="/")
87
 
 
 
 
 
 
88
  if __name__ == "__main__":
89
  uvicorn.run(app, host="0.0.0.0", port=7860)
 
5
  from sound_generator import generate_sound, generate_music
6
  from fastapi import FastAPI, HTTPException
7
  from fastapi.middleware.cors import CORSMiddleware
8
+ from fastapi.responses import FileResponse, JSONResponse
9
  from pydantic import BaseModel
10
 
11
+ # Create the FastAPI app with custom docs URL
12
+ app = FastAPI(docs_url="/api/docs")
13
 
14
+ # Configuración de CORS
 
15
  app.add_middleware(
16
  CORSMiddleware,
17
+ allow_origins=["*"],
 
 
18
  allow_credentials=True,
19
+ allow_methods=["*"],
20
+ allow_headers=["*"],
21
  )
22
 
 
23
  # Define a Pydantic model to handle the input prompt
24
  class AudioRequest(BaseModel):
25
  prompt: str
26
 
27
+ # Prueba para verificar si la API funciona - la dejamos por ahora para debugging
28
+ @app.get("/status")
29
+ def status():
30
+ return {"status": "API running", "version": "1.0"}
31
 
32
  @app.post("/generate-sound/")
33
  async def generate_sound_endpoint(request: AudioRequest):
 
49
  except Exception as e:
50
  raise HTTPException(status_code=500, detail=str(e))
51
 
 
52
  @app.post("/generate-music/")
53
  async def generate_music_endpoint(request: AudioRequest):
54
  try:
 
69
  except Exception as e:
70
  raise HTTPException(status_code=500, detail=str(e))
71
 
72
+ # Interfaz de Gradio
73
+ demo = gr.Blocks()
74
 
75
+ with demo:
 
76
  gr.Markdown("# API de Sonidos Generativos")
77
  gr.Markdown("Bienvenido al servicio de generación de sonidos mediante IA.")
78
+ gr.Markdown("Esta API está disponible para uso a través de los siguientes endpoints:")
79
+ gr.Markdown("- Generar sonido: `/api/generate-sound/`")
80
+ gr.Markdown("- Generar música: `/api/generate-music/`")
81
+ gr.Markdown("- Documentación de la API: `/api/docs`")
82
+
83
+ # Montar la app de Gradio en FastAPI
 
 
84
  app = gr.mount_gradio_app(app, demo, path="/")
85
 
86
+ # Para confirmar que el código está funcionando, podemos agregar un print
87
+ print("✅ Servidor inicializado. Gradio montado en la ruta principal '/'")
88
+ print("📝 Endpoints de la API disponibles en '/api/*'")
89
+ print("📄 Documentación disponible en '/api/docs'")
90
+
91
  if __name__ == "__main__":
92
  uvicorn.run(app, host="0.0.0.0", port=7860)