Tienes una API en Flask que tarda hasta 5 minutos en responder. Esto afecta gravemente la experiencia de usuario y genera cuellos de botella en el sistema.
Mejorar el tiempo de respuesta de una API lenta utilizando caché en memoria con functools.lru_cache, evitando procesamientos repetitivos.
Aquí algunas estrategias para reducir el tiempo de respuesta en una API lenta:
Una función que simula una llamada lenta (como una API externa que tarda) puede optimizarse aplicando caché en memoria para evitar que se repita.
from flask import Flask, request
import time
import functools
app = Flask(__name__)
# Simula una llamada costosa (como una API externa lenta)
def llamada_lenta_api(param):
print(f"Consultando API con {param}...")
time.sleep(5) # Simula espera de 5 segundos
return f"Resultado para {param}"
# Aplica caché en memoria: guarda el resultado para evitar repetirlo
@functools.lru_cache(maxsize=128)
def obtener_datos(param):
return llamada_lenta_api(param)
# Ruta de la API
@app.route("/datos")
def datos():
ciudad = request.args.get("ciudad", "bogota") # Lee parámetro ?ciudad=
resultado = obtener_datos(ciudad)
return {"ciudad": ciudad, "resultado": resultado}
# Ejecuta la app
if __name__ == "__main__":
app.run(debug=True) 1. @functools.lru_cache(maxsize=128)
maxsize=128: guarda hasta 128 combinaciones únicas antes de reemplazar.2. llamada_lenta_api(param)
3. obtener_datos(param)
4. @app.route("/datos")
/datos que recibe un parámetro ciudad.1. Ejecuta el script:
python app.py 2. Prueba la API:
# Primera llamada (tarda 5 segundos)
http://localhost:5000/datos?ciudad=bogota
# Segunda llamada (instantánea gracias al caché)
http://localhost:5000/datos?ciudad=bogota functools.lru_cache es una herramienta poderosa y simple para mejorar el rendimiento cuando se repiten solicitudes similares.
Perfecto para desarrollo local o cuando se manejan datos que cambian poco.