TypeScript में कार्य नियोजक: पूर्ण गाइड
\n\nकार्य नियोजक (task scheduler) एक उपकरण है जो आपको निर्धारित समय पर या निश्चित अंतराल पर फ़ंक्शन या स्क्रिप्ट चलाने की अनुमति देता है। TypeScript इकोसिस्टम में ऐसे परिदृश्यों को लागू करने के लिए कई परिपक्व लाइब्रेरी मौजूद हैं: सरल टाइमर से लेकर शक्तिशाली cron-सिस्टम तक। इस लेख में हम मुख्य दृष्टिकोणों को समझेंगे और दिखाएंगे कि वास्तविक परियोजनाओं में उनका उपयोग कैसे करें।
\n\nकार्य नियोजक की आवश्यकता क्यों है?
\nदोहराए जाने वाले कार्यों का स्वचालन किसी भी सर्वर एप्लिकेशन का मुख्य कार्य है। सामान्य परिदृश्य:
\n- \n
- हर घंटे ईमेल सूचनाएं भेजना। \n
- हर रात अस्थायी फ़ाइलों की सफाई करना। \n
- दिन के अंत में एनालिटिक्स एकत्र करना। \n
- अनुसूची के अनुसार कैश अपडेट करना। \n
TypeScript (और JavaScript) में एक अंतर्निहित तंत्र है — setInterval और setTimeout, लेकिन जटिल अनुसूचियों के लिए विशेष लाइब्रेरी का उपयोग करना अधिक सुविधाजनक है।
अंतर्निहित साधन: setInterval और setTimeout
\nसबसे सरल तरीका वैश्विक फ़ंक्शन का उपयोग करना है:
\n// उदाहरण: हर 5 सेकंड में निष्पादित करें\nconst intervalId = setInterval(() => {\n console.log('कार्य निष्पादित हुआ', new Date().toISOString());\n}, 5000);\n\n// 30 सेकंड के बाद रोकें\nsetTimeout(() => {\n clearInterval(intervalId);\n console.log('नियोजक रोक दिया गया');\n}, 30000);\nलाभ: स्थापना की आवश्यकता नहीं, किसी भी वातावरण में काम करता है। नुकसान: cron-अभिव्यक्तियों का समर्थन नहीं, छूटे हुए कार्यों का प्रबंधन करना कठिन।
\n\nnode-cron लाइब्रेरी
\nNode.js के लिए सबसे लोकप्रिय लाइब्रेरी में से एक। यह क्लासिक cron-प्रारूप (5 फ़ील्ड) के साथ काम करती है: मिनट, घंटे, महीने का दिन, महीना, सप्ताह का दिन।
\n\nस्थापना
\nnpm install node-cron\nnpm install @types/node-cron\n\nउपयोग का उदाहरण
\nimport * as cron from 'node-cron';\n\n// कार्य: हर मिनट\ncron.schedule('* * * * *', () => {\n console.log('हर मिनट चल रहा है');\n});\n\n// कार्य: हर दिन सुबह 9:30 बजे\ncron.schedule('30 9 * * *', () => {\n console.log('9:30 पर दैनिक कार्य');\n});\n\n// कार्य: कार्यदिवसों पर शाम 6:00 बजे\ncron.schedule('0 18 * * 1-5', () => {\n console.log('कार्यदिवसों पर शाम 6:00 बजे');\n});\n\nकार्यों का प्रबंधन
\nimport * as cron from 'node-cron';\n\nconst task = cron.schedule('*/5 * * * *', () => {\n console.log('हर 5 मिनट');\n});\n\n// कार्य रोकें\ntask.stop();\n\n// पुनः आरंभ करें\ntask.start();\n\n// स्थिति जांचें\nconsole.log(task.isActive()); // true या false\n\ncroner लाइब्रेरी
\nएक अधिक आधुनिक विकल्प, जो शुरू से TypeScript में लिखा गया है। यह विस्तारित सिंटैक्स (सेकंड, महीने के नाम) का समर्थन करता है और Node.js और ब्राउज़र दोनों में काम करता है।
\n\nस्थापना
\nnpm install croner\n\nसेकंड के साथ उदाहरण
\nimport Cron from 'croner';\n\n// हर 10 सेकंड\nconst job = new Cron('*/10 * * * * *', () => {\n console.log('हर 10 सेकंड में चल रहा है');\n});\n\n// कार्य: हर सोमवार सुबह 8:30 बजे\nconst weeklyJob = new Cron('30 8 * * 1', () => {\n console.log('सोमवार, 8:30');\n});\n\n// 1 मिनट के बाद रोकें\nsetTimeout(() => {\n job.stop();\n console.log('कार्य रोक दिया गया');\n}, 60000);\n\nउन्नत सुविधाएँ
\nimport Cron from 'croner';\n\n// नाम और समय क्षेत्र के साथ कार्य\nconst job = new Cron('0 9 * * *', { \n name: 'morning-report',\n timezone: 'Europe/Moscow'\n}, () => {\n console.log('मास्को के अनुसार सुबह की रिपोर्ट');\n});\n\n// अगला निष्पादन समय प्राप्त करें\nconst nextRun = job.nextRun();\nconsole.log('अगला चलन:', nextRun.toISOString());\n\n// सभी सक्रिय कार्यों की सूची\nconst activeJobs = Cron.getJobs();\nconsole.log('सक्रिय कार्य:', activeJobs.length);\n\nnode-cron और croner की तुलना
\n- \n
- node-cron — समय-परीक्षित लाइब्रेरी
पुस्तकालय में भी
XCTest — Swift (iOS/macOS) में परीक्षण
Node.js मॉनिटरिंग: ऑब्ज़र्वेबिलिटी के लिए उपकरण और लाइब्रेरी
JavaScript (Node.js) में प्रमाणीकरण और अधिकारिता: पूर्ण गाइड
Java में लॉगिंग: सर्वश्रेष्ठ लाइब्रेरीज़ और समाधानों का अवलोकन