Initial commit - dashboard leads
This commit is contained in:
70
backend/medir_tiempos.py
Normal file
70
backend/medir_tiempos.py
Normal file
@@ -0,0 +1,70 @@
|
||||
# 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")
|
||||
Reference in New Issue
Block a user