Correccion - Mejora #4332
abiertaTimeout en listado xlsx de gastos de proyecto
0%
Descripción
En un proyecto de la OEI con 40.000 gastos asociados se produce un timeout al exportar todos los gastos a hoja de cálculo. Este timeout se da incluso ajustando más los filtros para obtener listados de 10.000 gastos.
El proceso de obtención de los gastos es un tanto retorcido. Según el código del controlador de gastos se hace un procesado previo de todos los gastos filtrados para ajustar sus importes según gasto_x_proyecto:
# en proyectos: en caso de que la seccion sea proyecto hacemos una ultima transformacion a los elementos del listado para obtener el importe por proyecto. # Si el parametro select del find funcionase mejor no haria falta hacer a posteriori esto. @gastos.each {|p| p.importe_x_proyecto @proyecto }
y posteriormente a esto, se tienen que recorrer de nuevo todos los gastos para escribir sus valores en la hoja de cálculo.
Investigar dos posibles soluciones (no excluyentes):
- ver si es posible eliminar ese fragmento de código modificando los campos a mostrar en el listado
- preparar un sistema de tareas en background de forma que los procesos pesados (y este sería uno) se puedan hacer en una tarea batch y notificar posteriormente al usuario la URL de descarga del resultado.
Actualizado por Santiago Ramos hace más de 3 años
Metiéndole trazas a la exportación del listado, el fragmento de código que ajusta importes tarda cerca de un minuto y medio:
****** Finalizado el ajuste de gastos por proyecto (83.821596275 segundos empleados)
mientras que el timeout del servidor web estaba establecido a 10 minutos por lo que el peso mayor es la generación del listado:
Sent data gastos_PREMIO_EXCELENCIA_II/MEX/BANORTE/17_2021-03-01.xlsx (0.7ms) Completed 200 OK in 727048ms (Views: 642940.8ms | ActiveRecord: 90561.7ms)
A pesar de ello y aunque el informe se genera, el cliente a esas alturas parece que ya ha cerrado la conexión pues no llega a abrir ningún documento.