Node.js में कार्य अनुसूचक: अवलोकन और उपयोग के उदाहरण
आधुनिक backend-डेवलपमेंट में अक्सर एक निर्धारित समय पर कोड निष्पादित करने की आवश्यकता होती है: ईमेल न्यूज़लेटर भेजना, कैश साफ़ करना, डेटाबेस का बैकअप बनाना या एकत्रित डेटा को अपडेट करना। Node.js इकोसिस्टम में इस उद्देश्य के लिए कई परिपक्व लाइब्रेरीज़ मौजूद हैं। इस लेख में हम कार्य निर्धारण के तीन मुख्य दृष्टिकोणों पर चर्चा करेंगे: क्लासिक cron, लचीला शेड्यूल और कार्य कतारें।
1. node-cron — JavaScript के लिए क्लासिक cron
node-cron एक न्यूनतम लाइब्रेरी है जो मानक cron-अभिव्यक्तियों के अनुसार फ़ंक्शन चलाने की अनुमति देती है। यह सरल आवधिक कार्यों (हर मिनट, हर घंटे, हर दिन 3:00 बजे) के लिए आदर्श है।
स्थापना:
npm install node-cronएक कार्य का उदाहरण जो हर मिनट निष्पादित होता है:
const cron = require('node-cron');
cron.schedule('* * * * *', () => { console.log('कार्य हर मिनट निष्पादित होता है');});cron-अभिव्यक्ति की संरचना: सेकंड मिनट घंटा महीने_का_दिन महीना सप्ताह_का_दिन (node-cron में सेकंड वैकल्पिक है)।
अभिव्यक्तियों के उदाहरण:
'0 0 * * *'— हर दिन मध्यरात्रि में'*/5 * * * *'— हर 5 मिनट में'0 9-18 * * 1-5'— कार्यदिवसों पर सुबह 9 से शाम 6 बजे तक हर घंटे'30 3 * * 0'— हर रविवार सुबह 3:30 बजे
लाइब्रेरी अभिव्यक्तियों के सत्यापन और कार्यों को शुरू/रोकने का समर्थन करती है:
const task = cron.schedule('*/10 * * * *', () => { // हर 10 मिनट में कार्य});
// कार्य रोकेंtask.stop();
// पुनः शुरू करेंtask.start();
// जाँचें कि कार्य सक्रिय है या नहींconsole.log(task.isStarted()); // true/falseकब उपयोग करें: सरल आवधिक क्रियाओं के लिए जहाँ स्थिति भंडारण या त्रुटि प्रबंधन की आवश्यकता नहीं है।
2. node-schedule — आवर्ती नियमों के समर्थन के साथ लचीला शेड्यूल
node-schedule एक अधिक शक्तिशाली विकल्प है जो न केवल cron के माध्यम से बल्कि तिथियों, सप्ताह के दिनों और समय के स्पष्ट उल्लेख के साथ JavaScript-ऑब्जेक्ट के माध्यम से भी शेड्यूल सेट करने की अनुमति देता है।
स्थापना:
npm install node-schedulecron-अभिव्यक्ति के साथ उदाहरण:
const schedule = require('node-schedule');
const job = schedule.scheduleJob('*/5 * * * *', () => { console.log('हर 5 मिनट में निष्पादित होता है');});मुख्य लाभ — एक ऑब्जेक्ट के माध्यम से शेड्यूल सेट करने की क्षमता:
const job = schedule.scheduleJob({ hour: 14, minute: 30, dayOfWeek: [1, 3, 5] // सोमवार, बुधवार, शुक्रवार}, () => { console.log('कार्यदिवसों पर 14:30 बजे');});साथ ही, एक विशिष्ट तिथि पर एक बार का कार्य शेड्यूल किया जा सकता है:
const date = new Date(2025, 11, 31, 23, 59, 0);
schedule.scheduleJob(date, () => { console.log('नया साल आ गया!');});लाइब्रेरी कार्य को रद्द करने और अगले निष्पादन समय की जाँच का समर्थन करती है:
// कार्य रद्द करेंjob.cancel();
// अगली निष्पादन तिथि प्राप्त करेंconsole.log(job.nextInvocation()); // Date objectकब उपयोग करें: जब समय का सटीक नियंत्रण, नियमों का संयोजन या एक बार के कार्यों की आवश्यकता हो।
3. Bull — योजना और पुनः प्रयास के साथ कार्य कतारें
Bull Redis पर आधारित एक पूर्ण कतार प्रणाली है जिसमें एक शक्तिशाली अनुसूचक शामिल है। Bull न केवल कार्यों को स्थगित करने की अनुमति देता है, बल्कि पुनरावृत्ति, प्राथमिकताओं और समानांतर निष्पादन का प्रबंधन भी करता है।
स्थापना:
npm install bullविलंबित कार्य के साथ कतार का मूल उदाहरण:
const Queue = require('bull');
const emailQueue = new Queue('email', { redis: { host: 'localhost', port: 63 पुस्तकालय में भी
Rust पर ईमेल भेजना: मेलिंग के लिए lettre और async-smtp लाइब्रेरीज़
Go (Golang) में लॉगिंग: प्रोडक्शन के लिए सर्वश्रेष्ठ लाइब्रेरीज़ और समाधान
Rust में एप्लिकेशन मॉनिटरिंग: प्रदर्शन ट्रैकिंग के लिए लाइब्रेरी और टूल्स