1. परिचय
Golang क्रॉन पुस्तकालय एक शक्तिशाली और सुरक्षित उपकरण है जो निश्चित समय या अंतराल पर नौकरियों को निर्धारित करने की अनुमति देता है। यह यूनिक्स क्रॉन सेवा के आधार पर बनाया गया है, लेकिन यह एक स्वतंत्र पुस्तकालय के रूप में लागू किया गया है जो गो अनुप्रयोगों में एकीकृत किया जा सकता है। क्रॉन पुस्तकालय समय-आधारित अनुसूची की देखभाल करता है, जिससे आपको केवल नौकरी पर ध्यान केंद्रित करना पड़ता है जो क्रियान्वित होना चाहिए।
2. उदाहरण
क्रॉन पुस्तकालय को स्थापित करना
क्रॉन पुस्तकालय को अपने परियोजना में उपयोग करना शुरू करने के लिए, आपको पहले इसे go get
कमांड का उपयोग करके स्थापित करना होगा:
go get github.com/robfig/cron/[email protected]
क्रॉन पैकेज को आयात करें
स्थापित करने के बाद, आप इसे अपने गो कार्यक्रम में निम्नलिखित रूप से आयात कर सकते हैं:
import "github.com/robfig/cron/v3"
यहां एक सरल उदाहरण है कि कैसे एक क्रॉन नौकरी को सेट करने के लिए जोड़ा जा सकता है जो हर मिनट में एक संदेश प्रिंट करता है:
package main
import (
"fmt"
"github.com/robfig/cron/v3"
)
func main() {
c := cron.New()
c.AddFunc("0 30 * * * *", func() { fmt.Println("Every hour on the half hour") })
c.AddFunc("@hourly", func() { fmt.Println("Every hour") })
c.AddFunc("@every 1h30m", func() { fmt.Println("Every hour thirty") })
c.Start()
..
// कार्य केवल अपने अपने गोरूटीन में अक्षमता के रूप में पुनः प्रस्तुत किए जाते हैं।
...
// कार्य चालू कीते गए क्रॉन में भी जोड़े जा सकते हैं
c.AddFunc("@daily", func() { fmt.Println("Every day") })
..
..
c.Stop() // शेड्यूलर को बंद करें (जो भी नौकरियां पहले से चल रही हों उन्हें रोकता नहीं है)।
}
3. क्रॉन अभिव्यक्ति प्रारूप
एक क्रॉन अभिव्यक्ति एक समय सेट का प्रतिनिधित्व करती है, 6 अंतरिक्ष-विभाजन फ़ील्ड का उपयोग करके।
फील्ड नाम | अनिवार्य? | अनुमत मान | अनुमत विशेष संकेतक |
---|---|---|---|
सेकंड्स | हाँ | 0-59 | * / , - |
मिनट्स | हाँ | 0-59 | * / , - |
घंटे | हाँ | 0-23 | * / , - |
महीना का दिन | हाँ | 1-31 | * / , - ? |
महीना | हाँ | 1-12 या जनवरी-दिसंबर | * / , - |
सप्ताह के दिन | हाँ | 0-6 या रवि-सत | * / , - ? |
4. क्रॉन अभिव्यक्ति में विशेष संकेतक
- एस्ट्रिक्स ( * ) एस्ट्रिक्स दिए गए फ़ील्ड के लिए सभी संभावित मानों का प्रतिनिधित्व करता है। उदाहरण के लिए, मिनट्स फ़ील्ड में एक एस्ट्रिक्स हर मिनट का प्रतीक है।
- स्लैश ( / ) स्लैश वर्ण होल्डर को निर्दिष्ट वृद्धियाँ दर्शाने के लिए उपयोग किया जाता है। उदाहरण के लिए, सेकंड्स फ़ील्ड में "*/15" शब्द से यह दर्शाने का मतलब है कि हर 15 सेकंड के अंतर से प्रारंभ हो रहा है।
- कॉमा ( , ) कॉमा वर्ण विभिन्न विशिष्ट मानों की सूची के लिए उपयोग किया जाता है। उदाहरण के लिए, सप्ताह के दिन फ़ील्ड में "सोम,बुध,शुक्र" का अर्थ है की नौकरी सोमवार, बुधवार, और शुक्रवार को चलेगी।
- हाइफ़न ( - ) हाइफ़न मानों की श्रृंखला का प्रतिनिधित्व करता है। तथा, "9-17" घंटों फ़ील्ड में बताता है कि 9 बजे से 5 बजे तक हर घंटे।
- प्रश्न चिह्न ( ? ) प्रश्न चिह्न दिन-के-महीने और दिन-के-सप्ताह फ़ील्ड में उपयोग किया जा सकता है जो 'कोई निश्चित मान' का प्रतिनिधित्व करता है, जो उपयोगी होता है जब आपको एक निश्चित मान स्पष्ट करना है और दूसरे का नहीं।
5. पूर्वनिर्धारित अनुसूचियां
उपलब्ध पूर्वनिर्धारित अनुसूचियों का विस्तृत विवरण, एक तालिका प्रारूप में प्रदर्शित:
प्रविष्टि | विवरण | के बराबर |
---|---|---|
@yearly (या @annually) | एक बार साल में, आधी रात, 1 जनवरी | 0 0 0 1 1 * |
@monthly | एक बार महीने में, आधी रात, महीने के पहले | 0 0 0 1 * * |
@weekly | एक बार हफ्ते में, आधी रात, शनिवार/रविवार के बीच | 0 0 0 * * 0 |
@daily (या @midnight) | एक बार दिन में, आधी रात | 0 0 0 * * * |
@hourly | एक बार घंटे में, घंटे की शुरुआत | 0 0 * * * * |
6. अंतराल और निश्चित अंतराल शेड्यूलिंग
क्रॉन लाइब्रेरी में कार्यों को निश्चित अंतरालों पर निष्पादित करना एक शक्तिशाली सुविधा है। उदाहरण के लिए, हर 2 घंटे पर चलने वाले कार्य को निर्धारित करने के लिए:
c.AddFunc("@every 2h", func() { fmt.Println("Job runs every two hours") })
7. समय क्षेत्र और कार्य शेड्यूलिंग
अनुवाद और शेड्यूलिंग गो एप्लिकेशन को चलाने वाली मशीन के स्थानीय समय क्षेत्र में किए जाते हैं। डेलाइट-सेविंग समय में ध्यान देना चाहिए, क्योंकि कुछ समय मौजूद नहीं हो सकते या दोहराए जा सकते हैं।
8. स्तंभ सुरक्षा और समक्रमणीकरण
क्रॉन लाइब्रेरी का डिज़ाइन स्तंभ सुरक्षित और समक्रमणीय होता है। कॉलर के लिए सही क्रम में विधि आह्वान का सुनिश्चित रखना गतिस्पर्धा के दोष से बचने के लिए महत्वपूर्ण है। आवश्यकता होने पर उचित समक्रमण संवाहन यांत्रिकियाँ उपयोग करनी चाहिए ताकि कार्य सही ढंग से शेड्यूल और निष्पादित हों।