Spaces:
Running
Running
File size: 2,932 Bytes
95da284 d90d6a6 5b38336 bddc6a2 5b38336 bddc6a2 95da284 5b3c963 95da284 5b38336 d90d6a6 afb0579 e8b930e c0cf358 95da284 12cb4be 95da284 d90d6a6 4a900cc d90d6a6 6f1f886 95da284 d90d6a6 4a900cc 2b6d34d 4a900cc ac6309b afb0579 ac6309b |
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 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
import herramientas
from io import BytesIO
import funciones, globales
from fastapi import FastAPI, Form
from fastapi import FastAPI, File, UploadFile
from fastapi.responses import StreamingResponse, FileResponse, JSONResponse
app = FastAPI()
# Nuevo endpoint para Health Check
@app.get("/health",
tags=["Health Check"],
description="Verifica el estado de salud de la API.",
summary="Health Check"
)
async def health_check():
"""
Este endpoint devuelve una respuesta 200 OK para indicar que la API está funcionando.
"""
return JSONResponse(content={"status": "ok"}, status_code=200)
@app.post("/echo-image/",
description="Test endpoint que recibe y regresa la misma imagen, para probar envío, recepción y problemas con api o red.",
summary="Summary"
)
async def echo_image(image: UploadFile = File(...)):
if not image.content_type.startswith("image/"):
return {"error": "El archivo no es una imagen"}
contents = await image.read()
return StreamingResponse(BytesIO(contents), media_type=image.content_type)
@app.post("/genera-imagen/")
async def genera_imagen(platillo: str = Form(...)):
seconds_available = herramientas.obtenSegundosDisponibles()
print(herramientas.imprimeTimeNow())
if seconds_available > globales.work_cost:
print("Usando GPU (capa gratuita)...")
resultado = funciones.genera_platillo_gpu(platillo)
if "Error" in resultado:
return resultado
else:
return FileResponse(resultado, media_type="image/png", filename="imagen.png")
else:
print("Usando Inference...")
resultado = funciones.genera_platillo_inference(platillo)
print("El resultado de inference es: ", resultado)
if type(resultado) is str:
return resultado
else:
return StreamingResponse(content=resultado, media_type="image/png")
@app.post("/procesador-lotes/")
async def procesa_lote(platillo: str = Form(...)):
print("Servicio Secundario de Procesamiento de Lotes")
seconds_available = herramientas.obtenSegundosDisponibles()
#seconds_available = 0
print(herramientas.imprimeTimeNow())
if seconds_available > globales.work_cost:
print("Usando GPU (capa gratuita)...")
resultado = funciones.genera_platillo_gpu(platillo)
if "Error" in resultado:
return resultado
else:
return FileResponse(resultado, media_type="image/png", filename="imagen.png")
else:
print("Usando Inference...")
resultado = funciones.genera_platillo_inference(platillo)
print("El resultado de inference es: ", resultado)
if type(resultado) is str:
return resultado
else:
return StreamingResponse(content=resultado, media_type="image/png") |