عقدة الكود الخاصة بي تستمر في انتهاء المهلة الزمنية. لكنها كانت تعمل بشكل جيد من قبل. لا أعتقد أن الكود معقد جداً.
إليك الكود:
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)
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 || ''}
}
}
];
مرحباً @Elan_Savan!
الكود بسيط جداً بحيث لا يمكنه تجاوز حد الـ 60 ثانية بمفرده - تحليل سلاسل التاريخ بهذه الطريقة يعمل في أقل من 1ms. السبب الأرجح هو عدد العناصر التي تتدفق إلى العقدة: تعمل عقد الكود مرة واحدة لكل عنصر بشكل افتراضي، لذا إذا نما حجم البيانات في المصدر (مثلاً 200+ صف من جدول بيانات)، فإن إجمالي وقت التنفيذ يتراكم ويمكن أن يؤدي إلى تجاوز المهلة الزمنية. انقر على العقدة في المحرر وتحقق من عدد العناصر في مدخلاتها.
إذا كان عدد العناصر طبيعياً، فقد تكون هناك أيضاً مشكلة مؤقتة في سعة مُشغل مهام السحابة - حاول إيقاف سير العمل وتشغيله مرة أخرى، ثم أعد التشغيل في وضع الاختبار لمعرفة ما إذا كانت المشكلة تتكرر بشكل ثابت.
إعجاب واحد (1)
شكراً على الرؤية، @nguyenthieutoan.
أنت محق في أن الكود نفسه خفيف الوزن ولا يجب أن يصل عادةً إلى حد تنفيذ 60 ثانية. أول شيء يجب أن أتحقق منه هو عدد العناصر التي تدخل عقدة Code، لأن n8n ينفذ الكود لكل عنصر وارد بشكل افتراضي. إذا كان المصدر الأعلى يعيد مئات السجلات، فقد يصبح وقت التنفيذ التراكمي كبيراً.
أوصي أيضاً بالتحقق من:
• ما إذا كان سير العمل يعمل في وضع “Run Once for Each Item” أو “Run Once for All Items”.
• سجلات التنفيذ لتحديد أي عقدة تستهلك معظم وقت التشغيل فعلياً.
• أي عُقد أعلى مثل طلبات HTTP أو استعلامات قواعد البيانات أو عمليات جداول البيانات التي قد تدخل تأخيرات قبل تنفيذ عقدة Code.
• استخدام الذاكرة وسجل تنفيذ سير العمل إذا كنت تعمل على n8n Cloud، حيث يمكن أن يؤثر الازدحام المؤقت لمنفذ المهام أحياناً على أوقات التنفيذ.
للتحسين، يمكن أيضاً تبسيط تحويل التاريخ باستخدام دوال التعامل مع التاريخ الأصلية في JavaScript، مما يقلل من كمية تحليل السلاسل النصية المطلوبة.