Go में रूटीन ऑटोमेशन: स्क्रिप्ट्स जो काम करें और न टूटें

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

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

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

Go ऑटोमेशन के लिए आदर्श भाषा क्यों है?

\n\n

क्या आपने कभी Python में ऐसी स्क्रिप्ट लिखी है जो आपके लैपटॉप पर तो बढ़िया चली, लेकिन सर्वर पर इंटरप्रेटर के सही वर्ज़न के न होने की वजह से 'क्रैश' हो गई? या फिर आपकी Bash स्क्रिप्ट एक अनसपोर्टेड राक्षस में बदल गई जब लॉजिक 'फ़ाइल कॉपी करें' से थोड़ी भी जटिल हुई?

\n\n

अगर हाँ, तो आपको Go पर ध्यान देना चाहिए। यह भाषा Google में खास तौर पर उन समस्याओं को हल करने के लिए बनाई गई थी जिनका सामना इंजीनियर यूटिलिटी और सर्विस लिखते समय करते हैं। यह एक ही बाइनरी फ़ाइल में कंपाइल होती है (कोई डिपेंडेंसी नहीं!), बिजली की गति से काम करती है, और इसका सिंटैक्स सरल लेकिन शक्तिशाली है।

\n\n

इस लेख में हम आपको सिंटैक्स की बुनियादी बातें नहीं सिखाएँगे। हम सीधे काम की बात पर आएँगे: Go में टास्क ऑटोमेशन वास्तविक कोड उदाहरणों के साथ। आप जानेंगे कि अपनी पहली 'Go स्क्रिप्ट' कैसे लिखें जो उनके Python समकक्षों से ज़्यादा भरोसेमंद और तेज़ काम करेंगी। चलिए शुरू करते हैं!

\n\n

1. फ़ाइल सिस्टम के साथ काम: प्रो की तरह लॉग साफ़ करें

\n\n

एडमिन या डेवलपर के सबसे आम कामों में से एक है पुराने लॉग को साफ़ करना। आइए एक ऐसी यूटिलिटी लिखें जो किसी दी गई डायरेक्टरी में N दिनों से पुरानी फ़ाइलों को डिलीट करे। यह Go ऑटोमेशन का एक क्लासिक उदाहरण है।

\n\n
package main\n\nimport (\n    "fmt"\n    "os"\n    "path/filepath"\n    "time"\n)\n\nfunc main() {\n    // लॉग डायरेक्टरी का पथ\n    logDir := "/var/log/myapp"\n    // 7 दिनों से पुरानी फ़ाइलें डिलीट करें\n    maxAge := 7 * 24 * time.Hour\n\n    err := filepath.Walk(logDir, func(path string, info os.FileInfo, err error) error {\n        if err != nil {\n            return err\n        }\n\n        // डायरेक्टरी को छोड़ें\n        if info.IsDir() {\n            return nil\n        }\n\n        // फ़ाइल की उम्र जाँचें\n        if time.Since(info.ModTime()) > maxAge {\n            fmt.Printf("पुरानी फ़ाइल हटा रहे हैं: %s (उम्र: %v)\\n", path, time.Since(info.ModTime()))\n            err := os.Remove(path)\n            if err != nil {\n                fmt.Printf("हटाने में त्रुटि %s: %v\\n", path, err)\n            }\n        }\n        return nil\n    })\n\n    if err != nil {\n        fmt.Printf("डायरेक्टरी में घूमने में त्रुटि: %v\\n", err)\n    }\n}\n
\n\n

यह कोड इस बात का बेहतरीन उदाहरण है कि कैसे बिना किसी अतिरिक्त लाइब्रेरी के Go में टास्क ऑटोमेट किया जा सकता है। बिल्ट-इन filepath पैकेज फ़ोल्डर्स को रिकर्सिवली एक्सेस करता है, और os.Remove स्पेस खाली करता है। इसे एक बार कंपाइल करके, आपको एक बाइनरी मिलती है जिसे किसी भी सर्वर पर cron के ज़रिए चलाया जा सकता है।

\n\n

2. HTTP रिक्वेस्ट और API पार्सिंग

\n\n

मान लीजिए, आपको कई माइक्रोसर्विसेज़ की स्थिति की निगरानी करनी है या किसी बाहरी API से डेटा पार्स करना है। Go अपने गोरूटीन्स के साथ इसे शानदार तरीके से संभालता है। आइए एक ऐसी स्क्रिप्ट लिखें जो वेबसाइटों की उपलब्धता जाँचे और कुछ डाउन होने पर नोटिफिकेशन भेजे। यह Golang ऑटोमेशन का एक और शक्तिशाली उदाहरण है।

\n\n
package main\n\nimport (\n    "fmt"\n    "net/http"\n    "sync"\n    "time"\n)\n\nfunc checkURL(url string, wg *sync.WaitGroup) {\n    defer wg.Done()\n\n    client := http.Client{\n        Timeout: 5 * time.Second,\n    }\n\n    resp, err := client.Get(url)\n    if err != nil {\n        fmt.Printf("[FAIL] %s - %v\\n", url, err)\n        return\n    }\n    defer resp.Body.Close()\n\n    if resp.StatusCode != http.StatusOK {\n        fmt.Printf("[WARN] %s - स्थिति: %d\\n", url, resp.StatusCode)\n    } else {\n        fmt.Printf("[OK]   %s - काम कर रहा है\\n", url)\n    }\n}\n\nfunc main() {\n    urls := []string{\n        "https://google.com",\n        "https://github.com",\n        "https://pythonlib.ru",\n        "https://non-existent-site.xyz",\n    }\n\n    var wg sync.WaitGroup\n\n    for _, url := range urls {\n        wg.Add(1)\n        go checkURL(url, &wg) // गोरूटीन में चलाएँ\n    }\n\n    wg.Wait() // सभी गोरूटीन के पूरा होने की प्रतीक्षा करें\n    fmt.Println("जाँच पूरी हुई।")\n}\n
\n\n

s

ब्लॉग

पुस्तक अनुशंसाएँ