node-schedule — جدولة المهام لـ TypeScript

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

ما هي مكتبة node-schedule؟

node-schedule هي مكتبة شائعة لجدولة المهام المؤجلة والمتكررة في بيئة Node.js. وهي مكتوبة بلغة JavaScript، ولكنها تعمل بشكل ممتاز مع TypeScript بفضل وجود تعريفات الأنواع (DefinitelyTyped). تتيح المكتبة تشغيل الدوال في وقت محدد، وفقًا لجدول زمني (صيغة تشبه cron) أو بفواصل زمنية محددة.

لماذا نحتاج إلى node-schedule؟

في تطبيقات الويب الحديثة، غالبًا ما تكون هناك حاجة لتنفيذ عمليات خلفية: تنظيف ذاكرة التخزين المؤقت، إرسال النشرات البريدية الإلكترونية، النسخ الاحتياطي لقواعد البيانات، تحديث البيانات من واجهات برمجة التطبيقات الخارجية (API) أو إنشاء التقارير. تحل مكتبة node-schedule هذه المشكلة دون استخدام خدمات خارجية (مثل cron في Linux) — كل شيء يعمل مباشرة داخل تطبيقك المكتوب بـ TypeScript.

التثبيت

قم بتثبيت المكتبة والأنواع عبر npm:

npm install node-schedulenpm install --save-dev @types/node-schedule

بعد ذلك، يمكنك استيرادها في مشروع TypeScript:

import * as schedule from 'node-schedule';

الوظائف الأساسية

  • الجدولة باستخدام سلسلة cron — تقوم بتحديد الدقائق، الساعات، الأيام، الأشهر وأيام الأسبوع.
  • الجدولة لتاريخ محدد — تمرير كائن Date أو سلسلة نصية.
  • التكرار بفاصل زمني — على سبيل المثال، كل 10 دقائق.
  • إلغاء المهمة — يمكن إلغاء التنفيذ المجدول.
  • التحقق من وجود المهام النشطة — تقوم طريقة scheduledJobs بإرجاع جميع المهام النشطة.

مثال على كود TypeScript

import * as schedule from 'node-schedule';

// مهمة سيتم تنفيذها كل دقيقة (في الثانية 30)const job = schedule.scheduleJob('30 * * * * *', () => { console.log('تم تنفيذ المهمة في:', new Date().toLocaleString());});

// مهمة في تاريخ محددconst date = new Date(Date.now() + 5000); // بعد 5 ثوانٍschedule.scheduleJob(date, () => { console.log('مهمة لمرة واحدة بعد 5 ثوانٍ');});

// تكرار كل 10 ثوانٍconst intervalJob = schedule.scheduleJob('*/10 * * * * *', () => { console.log('كل 10 ثوانٍ');});

// إلغاء المهمة بعد 20 ثانيةsetTimeout(() => { job.cancel(); console.log('تم إلغاء المهمة الأولى');}, 20000);

// التحقق من المهام النشطةconsole.log('المهام النشطة:', Object.keys(schedule.scheduledJobs));

متى تستخدم node-schedule

  • عند الحاجة لتنفيذ مهام وفقًا لجدول زمني داخل تطبيق Node.js دون استخدام cron خارجي.
  • للمهام الخلفية البسيطة: تنظيف السجلات، إرسال رسائل البريد الإلكتروني، تحديث ذاكرة التخزين المؤقت.
  • عند الحاجة إلى مرونة صيغة cron (على سبيل المثال، كل أول يوم من الشهر الساعة 3:00).
  • إذا كنت لا تريد الاعتماد على نظام التشغيل (التوافق عبر المنصات المختلفة).

لا تستخدم node-schedule للأنظمة الموزعة عالية التحميل — في مثل هذه الحالات، تكون قوائم انتظار المهام (Bull, RabbitMQ) أو المجدولات السحابية (AWS CloudWatch, GCP Cloud Scheduler) أكثر ملاءمة.

المكتبة بسيطة، خفيفة الوزن، ومثالية للمشاريع الصغيرة والمتوسطة باستخدام TypeScript.

توصيات