TypeScript कार्य शेड्यूलर: node-schedule के साथ स्वचालन
आधुनिक वेब डेवलपमेंट में, अक्सर शेड्यूल के अनुसार कोड निष्पादित करने की आवश्यकता होती है: सूचनाएं भेजना, कैश साफ़ करना, रिपोर्ट तैयार करना या डेटा सिंक्रोनाइज़ करना। TypeScript प्रोजेक्ट्स के लिए, सबसे शक्तिशाली और लचीली लाइब्रेरी में से एक node-schedule है। यह एक कार्य शेड्यूलर है जो आपको cron-एक्सप्रेशन, तिथियों या मनमाने नियमों का उपयोग करके एक बार और आवर्ती दोनों प्रकार के निष्पादन सेट करने की अनुमति देता है।
स्थापना और सेटअप
लाइब्रेरी स्थापित करने के लिए, कमांड चलाएँ:
npm install node-schedulenpm install @types/node-schedule --save-devस्थापना के बाद, आप अपनी TypeScript फ़ाइल में मॉड्यूल आयात कर सकते हैं:
import * as schedule from 'node-schedule';node-schedule की मुख्य विशेषताएं
- cron-एक्सप्रेशन द्वारा शेड्यूलिंग — क्लासिक 6-फ़ील्ड मास्क (सेकंड, मिनट, घंटे, महीने का दिन, महीना, सप्ताह का दिन) का समर्थन।
- एक बार के कार्य — एक विशिष्ट समय पर कोड निष्पादित करना।
- आवर्ती नियम —
RecurrenceRuleऑब्जेक्ट का उपयोग करके कस्टम अंतराल बनाना। - कार्य रद्द करना — शेड्यूल किए गए कार्य के निष्पादन को रोकने की क्षमता।
- समय क्षेत्र समर्थन — निर्दिष्ट समय क्षेत्र में सटीक निष्पादन।
उदाहरण 1: सरल cron-शेड्यूलर
एक कार्य बनाएँ जो हर मिनट निष्पादित होगा:
import * as schedule from 'node-schedule';
const job = schedule.scheduleJob('*/1 * * * *', () => { console.log('कार्य निष्पादित:', new Date().toLocaleString());});
// 5 मिनट बाद कार्य रद्द करेंsetTimeout(() => { job.cancel(); console.log('कार्य रद्द किया गया');}, 5 * 60 * 1000);इस उदाहरण में, cron-एक्सप्रेशन '*/1 * * * *' का अर्थ है "हर मिनट"। फ़ील्ड के क्रम पर ध्यान दें: सेकंड, मिनट, घंटे, महीने का दिन, महीना, सप्ताह का दिन।
उदाहरण 2: विशिष्ट तिथि वाला कार्य
आप भविष्य में किसी निश्चित समय पर निष्पादन शेड्यूल कर सकते हैं:
import * as schedule from 'node-schedule';
const date = new Date(2025, 11, 31, 23, 59, 0); // 31 दिसंबर 2025, 23:59
const job = schedule.scheduleJob(date, () => { console.log('नया साल आ गया!');});
// जाँचें कि कार्य शेड्यूल है या नहींconsole.log('कार्य सक्रिय:', job !== null);उदाहरण 3: आवर्ती नियम (RecurrenceRule)
यदि cron-एक्सप्रेशन जटिल लगते हैं, तो समझने योग्य नियम बनाने के लिए RecurrenceRule ऑब्जेक्ट का उपयोग करें:
import * as schedule from 'node-schedule';
const rule = new schedule.RecurrenceRule();rule.hour = 9;rule.minute = 30;rule.dayOfWeek = [1, 3, 5]; // सोमवार, बुधवार, शुक्रवार
const job = schedule.scheduleJob(rule, () => { console.log('कार्यदिवसों पर सुबह 9:30 बजे बैठक (सोम, बुध, शुक्र)');});
// एक महीने बाद रद्द करने के लिए:setTimeout(() => job.cancel(), 30 * 24 * 60 * 60 * 1000);उदाहरण 4: समय क्षेत्र वाला कार्य
यदि आपका एप्लिकेशन विभिन्न समय क्षेत्रों में काम करता है, तो समय क्षेत्र निर्दिष्ट करें:
import * as schedule from 'node-schedule';
const job = schedule.scheduleJob( { hour: 8, minute: 0, tz: 'Europe/Moscow' }, () => { console.log('मास्को सुबह: 8:00'); });त्रुटि प्रबंधन और कार्य रद्द करना
एप्लिकेशन को क्रैश होने से बचाने के लिए हमेशा कॉलबैक के अंदर त्रुटि प्रबंधन प्रदान करें:
import * as schedule from 'node-schedule';
const job = schedule.scheduleJob('*/5 * * * *', async () => { try { // आपका एसिंक्रोनस कोड const data = await fetchDataFromAPI(); console.log('डेटा प्राप्त:', data); } catch (error) { console.error('शेड्यूलर में त्रुटि:',