Node.js पर कार्य निर्धारक: node-schedule और node-cron
\n\nआधुनिक वेब विकास में, अक्सर निर्धारित समय पर या नियमित अंतराल पर कुछ क्रियाएं करने की आवश्यकता होती है। उदाहरण के लिए, ईमेल द्वारा रिपोर्ट भेजना, डेटाबेस साफ़ करना, बाहरी संसाधनों को पार्स करना या कैश अपडेट करना। Node.js वातावरण में, इस उद्देश्य के लिए कार्य निर्धारकों का उपयोग किया जाता है। दो सबसे लोकप्रिय उपकरण node-schedule और node-cron हैं। इस लेख में, हम दोनों का विस्तार से विश्लेषण करेंगे, कोड उदाहरण प्रदान करेंगे और आपकी परियोजना के लिए उपयुक्त चुनने में मदद करेंगे।
\n\nNode.js में कार्य निर्धारक की आवश्यकता क्यों है?
\nNode.js एक एकल-थ्रेडेड वातावरण है जिसमें इवेंट-संचालित आर्किटेक्चर है। अंतर्निहित फ़ंक्शन setTimeout और setInterval विलंब के साथ या समय-समय पर कोड निष्पादित करने की अनुमति देते हैं, लेकिन वे जटिल परिदृश्यों के लिए उपयुक्त नहीं हैं:
- \n
- सेटिंग में कोई लचीलापन नहीं (उदाहरण के लिए, "महीने के हर दूसरे सोमवार को 10:30 बजे")। \n
- एप्लिकेशन को पुनरारंभ करने के बाद स्थिति सहेजते नहीं हैं। \n
- प्रबंधन में कठिनाई (रद्द करना, शेड्यूल बदलना)। \n
कार्य निर्धारक शेड्यूल पर कार्यों को बनाने, शुरू करने और रद्द करने के लिए एक सरल API प्रदान करके इन समस्याओं का समाधान करते हैं।
\n\nnode-schedule लाइब्रेरी
\nnode-schedule एक लचीला निर्धारक है जो cron-जैसे सिंटैक्स पर आधारित है, लेकिन उन्नत क्षमताओं के साथ। यह मिनट की सटीकता के साथ आवर्ती कार्यों को सेट करने की अनुमति देता है, साथ ही एक विशिष्ट तिथि पर एक बार के कार्यों को भी।
\n\nस्थापना
\nnpm install node-schedule\n\nमुख्य विशेषताएं
\n- \n
- cron-अभिव्यक्तियों के लिए समर्थन (6 फ़ील्ड: सेकंड, मिनट, घंटे, महीने का दिन, महीना, सप्ताह का दिन)। \n
- Date ऑब्जेक्ट का उपयोग करके एक बार निष्पादन सेट करने की क्षमता। \n
RecurrenceRuleऑब्जेक्ट का उपयोग करके आवर्ती नियम। \n - कार्यों को प्रबंधित करने के लिए
cancel()औरcancelNext()विधियाँ। \n
उदाहरण 1: हर 5 मिनट में कार्य चलाना
\nconst schedule = require('node-schedule');\n\nconst job = schedule.scheduleJob('*/5 * * * *', function() {\n console.log('कार्य हर 5 मिनट में निष्पादित होता है:', new Date().toLocaleString());\n});\n\n// 20 मिनट बाद कार्य रद्द करें\nsetTimeout(() => {\n job.cancel();\n console.log('कार्य रद्द कर दिया गया');\n}, 20 * 60 * 1000);\n\n\nउदाहरण 2: एक विशिष्ट तिथि पर कार्य
\nconst schedule = require('node-schedule');\n\nconst date = new Date(2025, 5, 15, 10, 30, 0); // 15 जून 2025, 10:30:00\n\nconst job = schedule.scheduleJob(date, function() {\n console.log('एक बार का कार्य निष्पादित हुआ', new Date().toLocaleString());\n});\n\nconsole.log('कार्य निर्धारित है', date.toLocaleString());\n\n\nउदाहरण 3: जटिल आवर्ती नियम
\nconst schedule = require('node-schedule');\n\nconst rule = new schedule.RecurrenceRule();\nrule.dayOfWeek = [1, 3, 5]; // सोमवार, बुधवार, शुक्रवार\nrule.hour = 9;\nrule.minute = 0;\n\nconst job = schedule.scheduleJob(rule, function() {\n console.log('कार्य कार्यदिवसों पर 9:00 बजे निष्पादित होता है (सोम, बुध, शुक्र)');\n});\n\n\nnode-cron लाइब्रेरी
\nnode-cron एक हल्का विकल्प है जो Unix-सिस्टम के क्लासिक cron पर आधारित है। यह उपयोग में सरल है, लेकिन node-schedule की तुलना में कम लचीला है। यह 5 फ़ील्ड (मिनट, घंटे, महीने का दिन, महीना, सप्ताह का दिन) का समर्थन करता है।
\n\nस्थापना
\nnpm install node-cron\n\nमुख्य विशेषताएं
\n- \n
- मानक cron-सिंटैक्स (5 फ़ील्ड)। \n
start(),stop(),destroy()विधियाँ। \n timezoneविकल्प के माध्यम से समय क्षेत्रों के लिए समर्थन। \n now()का उपयोग करके कार्य को तुरंत चलाने की क्षमता। \n
उदाहरण 1: हर दिन आधी रात को कार्य चलाना
\nconst c