इस प्रोजेक्ट के बारे में
go-schedule Linux, macOS और Windows के लिए Go में कार्यान्वित एक क्रॉस-प्लेटफॉर्म टास्क शेड्यूलर है। इसे आवर्ती शेड्यूल (recurring schedules) को समझने योग्य बनाने के लिए डिज़ाइन किया गया है: उपयोगकर्ता 'every 15 minutes' या 'weekdays at 09:00' जैसे सरल भाषा के भाव लिख सकते हैं, या cron के एक प्रलेखित सबसेट का उपयोग कर सकते हैं, जिसमें पारंपरिक पांच-फील्ड और बाउंडेड छह-फील्ड सेकंड फॉर्म शामिल हैं। स्वीकृत शेड्यूल को शेड्यूलर की व्याख्या और अगले रन समय के साथ वापस दिखाया जाता है, जिससे निष्पादन से पहले गलतियों को पकड़ने में मदद मिलती है।
यह प्रोजेक्ट तीन मुख्य इंटरफेस प्रदान करता है: एक CLI (gosched), एक Wails-आधारित डेस्कटॉप GUI, और एक बैकग्राउंड डेमन (goschedd)। डेमन के पास शेड्यूलिंग इंजन, SQLite स्टोर और एक्जीक्यूटर होता है, जबकि CLI और GUI एक स्थानीय IPC एंडपॉइंट (Linux/macOS पर Unix डोमेन सॉकेट, Windows पर नामी पाइप) के माध्यम से पतले क्लाइंट के रूप में कार्य करते हैं। इस डिज़ाइन का अर्थ है कि GUI बंद करने से शेड्यूल नहीं रुकते, और CLI तथा GUI एक ही स्टेट पर काम करते हैं। डेमन को systemd, launchd, या Windows Service के माध्यम से सिस्टम सर्विस के रूप में पंजीकृत किया जा सकता है, ताकि शेड्यूल बूट पर शुरू हो सकें और इंटरैक्टिव लॉगिन के बिना चल सकें।
शेड्यूलिंग व्यवहार में IANA टाइमज़ोन सपोर्ट, डेलाइट सेविंग ट्रांज़िशन का स्पष्ट प्रबंधन, UTC-आधारित स्टोरेज और RFC 5545 पर आधारित रिकरेंस सिमेंटिक्स शामिल हैं। डाउनटाइम के बाद, प्रत्येक टास्क जिसने रन मिस किया है, उसे एक कैच-अप रन मिलता है और फिर वह सामान्य रूप से फिर से शुरू हो जाता है। प्रति-टास्क ओवरलैप नीतियां एक लंबित रन को कतारबद्ध (डिफ़ॉल्ट), नए रन को छोड़ना, या समवर्ती रन की अनुमति देना हो सकती हैं। कैलेंडर के विशेष मामलों—जैसे 31 तारीख, 29 फरवरी, या पांचवें शुक्रवार के लिए निर्धारित टास्क—को एक घोषित नीति द्वारा संभाला जाता है: अवधि को छोड़ना, अंतिम वैध तिथि पर वापस जाना, या अगली अवधि में रोल होना।
अतिरिक्त क्षमताओं में कैस्केडिंग इनेबल/डिसेबल के साथ नेस्टेड ग्रुप, ड्राफ्ट टास्क जिन्हें विवरण ज्ञात होने से पहले सहेजा जा सकता है, केवल मैनुअल टास्क, और चेनिंग शामिल है जहाँ सफलता, विफलता, या किसी भी टर्मिनल परिणाम के साथ टास्क पूरा होने पर एक टारगेट टास्क ट्रिगर हो सकता है। चेन्स को टिकाऊ 'at-least-once' डिलीवरी के रूप में वर्णित किया गया है, और लंबित कार्य डेमन रीस्टार्ट के बाद भी जीवित रहते हैं। स्थानीय बाहरी ट्रिगर्स और ट्रिगर सेट अन्य प्रक्रियाओं को अपारदर्शी कुंजियों (opaque keys) का उपयोग करके सामान्य शेड्यूलर रन का अनुरोध करने देते हैं; ट्रिगर सेट प्रति टास्क 1-99 स्वतंत्र रूप से उपयोग करने योग्य कुंजियों का समर्थन करते हैं। फ़ाइलसिस्टम वॉचर्स तब टास्क रन का अनुरोध कर सकते हैं जब एक चयनित फ़ाइल बनाई जाती है, लिखी जाती है, या परमाणु रूप से बदली जाती है और स्थिर हो जाती है; डायरेक्टरी वॉचर्स एक बेसनेम ग्लोब का उपयोग करते हैं और वैकल्पिक रूप से वास्तविक सब-डायरेक्टरीज़ को शामिल कर सकते हैं।
cron इंटरऑपरेबिलिटी में gosched cron इम्पोर्ट, एक्सप्लेन और एक्सपोर्ट शामिल हैं। इम्पोर्ट एक मौजूदा crontab को पढ़ता है, प्रत्येक लाइन को सरल भाषा और उसके अगले रन में दिखाता है, और टास्क बनाता है; --dry-run परिवर्तनों का पूर्वावलोकन करता है। असमर्थित या अस्पष्ट संरचनाओं को अनुमान लगाने के बजाय अस्वीकार कर दिया जाता है। @reboot फॉर्म और पठनीय 'at scheduler startup' फॉर्म एक क्रॉस-प्लेटफॉर्म स्टार्टअप टास्क बनाते हैं जो प्रति डेमन प्रोसेस स्टार्ट एक बार चलता है।
यह प्रोजेक्ट Apache-2.0 लाइसेंस के तहत है। रिलीज़ में Windows MSI इंस्टॉलर, macOS डेस्कटॉप बंडल, Linux डेस्कटॉप बंडल और हेडलेस डेमन-एंड-CLI आर्काइव्स शामिल हैं। दस्तावेज़ीकरण में इंस्टॉलेशन, CLI संदर्भ, GUI फ़ील्ड, cron इंटरऑपरेबिलिटी, सुरक्षा और मेंटेनर टेस्ट स्क्रिप्ट शामिल हैं। विकास spec-driven है जिसमें specs/001-task-scheduler के तहत विनिर्देश हैं और gofmt, go vet, golangci-lint, go test -race और कोर पैकेज पर कवरेज लक्ष्यों सहित Go टूलिंग मानकों का उपयोग करता है।
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.