# medir_tiempos.py # Mide cuánto tarda CADA parte que carga el dashboard de Leads al iniciar. # Simula lo mismo que hace el backend en su precarga, pero cronometrando cada paso. # Ejecutar en backend/: python medir_tiempos.py import time import services as S def cron(nombre, fn): t0 = time.perf_counter() ok = "OK" extra = "" try: r = fn() try: if isinstance(r, (list, dict)): extra = f"({len(r)} items)" except Exception: pass except Exception as e: ok = "ERROR" extra = str(e)[:60] dt = time.perf_counter() - t0 print(f" {nombre:38} {dt:7.2f}s {ok} {extra}") return dt periodos = S._periodos_actual_anterior() a0, m0 = periodos[0] print("\n" + "="*70) print(" MEDICIÓN DE TIEMPOS DE CARGA — Dashboard LEADS") print("="*70) print("\n[1] INSUMOS CRUDOS (consultas base, se cargan 1 vez)") tot1 = 0 tot1 += cron("Leads (Chatwoot/PostgreSQL)", S._leads_crudos) tot1 += cron("Cursos (SQL Server)", S._cursos_crudos) tot1 += cron("Matriculas (SQL Server)", S._matriculas_crudas) tot1 += cron("Leads asignados/respuesta", S._leads_asignados_crudos) tot1 += cron("Cartera (Supabase)", S._cartera_rows_cache) tot1 += cron("Plantillas", S._plantillas_crudas) print(f"\n --> Subtotal insumos: {tot1:.2f}s") print(f"\n[2] APARTADO LEADS (periodo {a0}-{m0}, filtros TODOS)") tot2 = 0 tot2 += cron("leads_dashboard", lambda: S.leads_dashboard(a0, m0, "TODOS", "TODOS", "TODOS")) tot2 += cron("leads_filtros", S.opciones_filtros) print(f"\n --> Subtotal Leads: {tot2:.2f}s") print(f"\n[3] APARTADO VENDEDORES (periodo {a0}-{m0})") tot3 = 0 tot3 += cron("vendedores_dashboard", lambda: S.vendedores_dashboard(a0, m0, "TODOS")) print(f"\n --> Subtotal Vendedores: {tot3:.2f}s") print(f"\n[4] APARTADO OTROS GENERAL (periodo {a0}-{m0}) — el mas pesado") tot4 = 0 tot4 += cron("otros_general", lambda: S.otros_general(a0, m0, "TODOS")) print(f"\n --> Subtotal Otros General: {tot4:.2f}s") print(f"\n[5] APARTADO ROAS (periodo {a0}-{m0})") tot5 = 0 tot5 += cron("roas_dashboard", lambda: S.roas_dashboard(a0, m0, "TODOS")) print(f"\n --> Subtotal ROAS: {tot5:.2f}s") total = tot1 + tot2 + tot3 + tot4 + tot5 print("\n" + "="*70) print(f" TIEMPO TOTAL (todo en frio, 1a vez): {total:.2f}s") print(" Nota: en el arranque real, [1]+[2] van en un hilo y [4] en otro,") print(" asi que corren EN PARALELO. El tiempo real es ~ el mas lento de los dos.") print("="*70 + "\n")