TypeScript में कार्य नियोजक: cron-लाइब्रेरी और टाइमर के लिए पूर्ण गाइड

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

TypeScript में कार्य नियोजक: पूर्ण गाइड

\n\n

कार्य नियोजक (task scheduler) एक उपकरण है जो आपको निर्धारित समय पर या निश्चित अंतराल पर फ़ंक्शन या स्क्रिप्ट चलाने की अनुमति देता है। TypeScript इकोसिस्टम में ऐसे परिदृश्यों को लागू करने के लिए कई परिपक्व लाइब्रेरी मौजूद हैं: सरल टाइमर से लेकर शक्तिशाली cron-सिस्टम तक। इस लेख में हम मुख्य दृष्टिकोणों को समझेंगे और दिखाएंगे कि वास्तविक परियोजनाओं में उनका उपयोग कैसे करें।

\n\n

कार्य नियोजक की आवश्यकता क्यों है?

\n

दोहराए जाने वाले कार्यों का स्वचालन किसी भी सर्वर एप्लिकेशन का मुख्य कार्य है। सामान्य परिदृश्य:

\n
    \n
  • हर घंटे ईमेल सूचनाएं भेजना।
  • \n
  • हर रात अस्थायी फ़ाइलों की सफाई करना।
  • \n
  • दिन के अंत में एनालिटिक्स एकत्र करना।
  • \n
  • अनुसूची के अनुसार कैश अपडेट करना।
  • \n
\n

TypeScript (और JavaScript) में एक अंतर्निहित तंत्र है — setInterval और setTimeout, लेकिन जटिल अनुसूचियों के लिए विशेष लाइब्रेरी का उपयोग करना अधिक सुविधाजनक है।

\n\n

अंतर्निहित साधन: 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\n

node-cron लाइब्रेरी

\n

Node.js के लिए सबसे लोकप्रिय लाइब्रेरी में से एक। यह क्लासिक cron-प्रारूप (5 फ़ील्ड) के साथ काम करती है: मिनट, घंटे, महीने का दिन, महीना, सप्ताह का दिन।

\n\n

स्थापना

\n
npm install node-cron\nnpm install @types/node-cron
\n\n

उपयोग का उदाहरण

\n
import * 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

कार्यों का प्रबंधन

\n
import * 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\n

croner लाइब्रेरी

\n

एक अधिक आधुनिक विकल्प, जो शुरू से TypeScript में लिखा गया है। यह विस्तारित सिंटैक्स (सेकंड, महीने के नाम) का समर्थन करता है और Node.js और ब्राउज़र दोनों में काम करता है।

\n\n

स्थापना

\n
npm install croner
\n\n

सेकंड के साथ उदाहरण

\n
import 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

उन्नत सुविधाएँ

\n
import 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\n

node-cron और croner की तुलना

\n
    \n
  • node-cron — समय-परीक्षित लाइब्रेरी

अनुशंसाएँ