Tengo este flujo de trabajo donde necesito manejar grandes datos (casi 48MB) que obtengo de un subflujo, pero n8n genera un error de conexión perdida en el flujo de trabajo principal. Creo que se está bloqueando y no hay forma de reducir los datos porque necesito que se procesen todos los datos. Estamos en el Plan Enterprise. ¿Podrías guiarme sobre qué más se puede hacer?
Parece que has llegado al límite de memoria, @mylearnings_abu
Esto puede ayudarte
¡Bienvenido @mylearnings_abu a nuestra comunidad! Soy Jay y soy un creador verificado de n8n.
El problema principal es que n8n carga todos los elementos en memoria a la vez - 48MB de datos sin procesar fácilmente alcanzarán el límite. En lugar de pasar el conjunto de datos completo a través de la salida del subworkflow, reestructúralo para que el subworkflow devuelva solo IDs o referencias, y luego procesa los datos reales en lotes en el workflow principal usando un nodo Split in Batches (tamaño de lote 50-100). Si necesitas obtener los datos por registro, hazlo dentro del bucle de lotes con un nodo HTTP Request o de base de datos. Esto mantiene el uso de memoria plano independientemente del tamaño total del conjunto de datos.
Hola @mylearnings_abu
Esto podría ayudarte:
En realidad, en mi caso el subworkflow devuelve datos de la base de datos y todos estos datos son necesarios y luego se pasan para hacer algunas manipulaciones que nuevamente es otro subworkflow, así que no hay forma de que pueda reducir nada en 48MB
También tengo una pregunta más: si tenemos un archivo JSON en S3 (un array de objetos), ¿cómo podemos leer los datos en lotes? ¿Es necesario hacer un GET del archivo completo y luego realizar el agrupamiento en lotes?
Hola @mylearnings_abu tienes razón, puedes descargar el JSON directamente del nodo AWS S3, y una vez que el archivo esté ahí, puedes extraer su contenido JSON usando el nodo extraer desde archivo, y una vez que tengas el JSON extraído, puedes añadir un bucle que es bastante fácil o configurar un nodo de código si deseas algunas operaciones específicas a realizar en los datos. Un problema que veo de inmediato es que el archivo que obtendrías sería muy grande, ya que n8n actualmente no soporta lectura parcial mediante streaming. Así que ten cuidado con el uso de memoria.
Es mejor rediseñar tu flujo de trabajo para que funcione en lotes (obtén algunos datos, procésalos, reescribe/modifica), en lugar de obtener todos los datos y luego procesarlos