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(...)): #Obtengo los segundos disponibles de procesamiento para saber si tengo GPU disponible de la capa gratuita o me voy a método cobrado. seconds_available = herramientas.obtenSegundosDisponibles() print(herramientas.imprimeTime()) 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")