Mi nodo de código sigue agotando el tiempo de espera. Pero solía funcionar perfectamente. No creo que sea código muy complejo.
aquí está el código:
const rawDate = $input.item.json.Date;
const rawTime = $input.item.json.Current_Time;
const parts = rawDate.split(‘-’);
const day = parts[0].padStart(2, ‘0’);
const monthMap = { Jan:‘01’, Feb:‘02’, Mar:‘03’, Apr:‘04’, May:‘05’, Jun:‘06’, Jul:‘07’, Aug:‘08’, Sep:‘09’, Oct:‘10’, Nov:‘11’, Dec:‘12’ };
const mm = monthMap[parts[1]];
const yyyy = 20${parts[2]};
const timeWithMs = rawTime.split(‘T’)[1];
const timePart = timeWithMs.split(‘.’)[0];
const offsetPart = timeWithMs.includes(‘+’) ? +${timeWithMs.split('+')[1]} : -${timeWithMs.split('-')[1]};
return {
…$input.item.json,
Formatted_Date: ${yyyy}-${mm}-${day}T${timePart}${offsetPart}
};
1 me gusta
const { Date: d, Current_Time: t } = $input.item.json;
const [day, mon, yr] = d.split(‘-’);
const month = {
Jan:‘01’, Feb:‘02’, Mar:‘03’, Apr:‘04’,
May:‘05’, Jun:‘06’, Jul:‘07’, Aug:‘08’,
Sep:‘09’, Oct:‘10’, Nov:‘11’, Dec:‘12’
}[mon];
const time = t.split(‘T’)[1];
const [hms, offset] = time.split(‘.’);
return [
{
json: {
…$input.item.json,
Formatted_Date: 20${yr}-${month}-${day.padStart(2,'0')}T${hms}.${offset || ''}
}
}
];
¡Bienvenido @Elan_Savan!
Ese código es demasiado simple para alcanzar el límite de 60 segundos por sí solo: el análisis de cadenas de fecha como este se ejecuta en menos de 1ms. La causa más probable es el número de elementos que fluyen hacia el nodo: los nodos de código se ejecutan una vez por elemento de forma predeterminada, así que si tus datos ascendentes han aumentado (digamos 200+ filas de una hoja de cálculo), el tiempo total de ejecución se acumula y puede activar el tiempo de espera. Haz clic en el nodo en el editor y verifica cuántos elementos hay en su entrada.
Si el número de elementos se ve normal, también podría ser un problema temporal de capacidad del ejecutor de tareas en la nube: intenta desactivar y activar el flujo de trabajo, luego vuelve a ejecutar en modo de prueba para ver si se reproduce de manera consistente.
1 me gusta
Gracias por la información, @nguyenthieutoan.
Tienes razón en que el código en sí es ligero y normalmente no debería alcanzar el límite de ejecución de 60 segundos. Lo primero que verificaría es el número de elementos que entran en el nodo Code, ya que n8n ejecuta el código para cada elemento entrante de forma predeterminada. Si la fuente ascendente devuelve cientos de registros, el tiempo de ejecución acumulado podría volverse significativo.
También te recomendaría verificar:
• Si el flujo de trabajo se ejecuta en modo «Run Once for Each Item» o «Run Once for All Items».
• Los registros de ejecución para identificar qué nodo está consumiendo la mayor parte del tiempo de ejecución.
• Cualquier nodo ascendente como HTTP Requests, consultas a bases de datos u operaciones con hojas de cálculo que puedan introducir retrasos antes de que se ejecute el nodo Code.
• El uso de memoria e historial de ejecución del flujo de trabajo si se ejecuta en n8n Cloud, ya que la congestión temporal del ejecutor de tareas ocasionalmente puede afectar los tiempos de ejecución.
Para optimizar, la transformación de fechas también se puede simplificar utilizando las funciones nativas de manejo de fechas de JavaScript, reduciendo la cantidad de análisis de cadenas necesario.