Go Academy · पाठ

समय-आधारित शेड्यूलिंग

आवधिक कार्य चलाएँ

पाठ 1, कुल 4 में से13 चरण

समय-आधारित शेड्यूलिंग, CoddyKit पर Go Academy का एक निःशुल्क पाठ है। यह 4 में से 1वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Go Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Go Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

समय-सारिणी पर काम चलाना

कई प्रणालियों को आवधिक कार्य की आवश्यकता होती है: रात में अस्थायी फ़ाइलें साफ़ करना, हर सुबह सारांश ईमेल भेजना या हर मिनट किसी API से जानकारी लेना। यह पाठ मानक लाइब्रेरी का उपयोग करके Go में समय-आधारित समय-सारिणी बनाना सिखाता है।

time पैकेज

Go का time पैकेज आधार है। प्रमुख उपकरण:

  • time.Sleep किसी गोरूटीन को रोकता है
  • time.After ऐसा चैनल लौटाता है जो एक बार सक्रिय होता है
  • time.Ticker बार-बार सक्रिय होता है
  • time.Timer विलंब के बाद एक बार सक्रिय होता है

एक सरल लूप

सबसे सरल समय-सारिणी: काम कीजिए, रुकिए और दोहराइए।

package main

import (
    "fmt"
    "time"
)

func main() {
    for i := 0; i < 3; i++ {
        fmt.Println("tick", i)
        time.Sleep(10 * time.Millisecond)
    }
}

Sleep में विचलन क्यों आता है

Sleep वाला लूप धीरे-धीरे समय से हट जाता है: यदि काम में 200ms लगते हैं और आप 1s रुकते हैं, तो वास्तविक अंतराल 1.2s होता है और यह अंतराल बढ़ता जाता है। सटीक अंतरालों के लिए Ticker का उपयोग कीजिए, जिसे आगे के पाठ में शामिल किया गया है।

एक बार के विलंब के लिए time.After

time.After(d) ऐसा चैनल लौटाता है जो अवधि d के बाद एक बार मान प्राप्त करता है। यह समय-सीमा के लिए select में उपयोगी है।

select {
case <-time.After(2 * time.Second):
    fmt.Println("2s elapsed")
}

time.Timer

एक Timer एक बार सक्रिय होता है और इसे रोका या रीसेट किया जा सकता है, जबकि time.After को रद्द नहीं किया जा सकता।

t := time.NewTimer(5 * time.Second)
defer t.Stop()
<-t.C
fmt.Println("fired")

किसी निश्चित समय पर समय-सारिणी बनाना

मान लीजिए, आपको 3 AM पर काम चलाना है। उस क्षण तक की अवधि की गणना कीजिए और उतनी अवधि के लिए sleep/timer लगाइए, फिर अगले दिन के लिए दोबारा समय-सारिणी बनाइए।

now := time.Now()
next := time.Date(now.Year(), now.Month(), now.Day(), 3, 0, 0, 0, now.Location())
if next.Before(now) {
    next = next.Add(24 * time.Hour)
}
fmt.Println("sleep for", time.Until(next))

अवधियों का प्रकार निश्चित होता है

time.Duration नैनोसेकंडों की संख्या वाला int64 है और इसमें उपयोगी स्थिरांक हैं: time.Second, time.Minute, time.Hour। पढ़ने योग्य अंतरालों के लिए इन्हें गुणा कीजिए।

every := 30 * time.Minute
fmt.Println(every)

मोनोटोनिक घड़ी बनाम वास्तविक घड़ी

Go का time.Now बीता हुआ समय मापने के लिए उपयोग की जाने वाली मोनोटोनिक रीडिंग भी शामिल करता है, जो घड़ी में होने वाले बदलावों से प्रभावित नहीं होती। अवधियों के लिए वास्तविक घड़ी की घटाव करने के बजाय time.Since का उपयोग कीजिए।

start := time.Now()
// ... work ...
fmt.Println("took", time.Since(start))

लाइब्रेरी का उपयोग कब करें

जटिल समय-सारिणियों ("हर कार्यदिवस सुबह 9:15") के लिए समय की गणना स्वयं लिखना त्रुटि-प्रवण होता है। आगे के पाठ में शामिल रॉबफ़िग/क्रॉन लाइब्रेरी आपके लिए क्रॉन अभिव्यक्तियों को पार्स करती है।

चलाकर देखें: अगली बार की गणना

यह स्व-निहित प्रोग्राम केवल time पैकेज का उपयोग करके गणना करता है कि अगले मिनट की सीमा तक कितना समय बचा है।

package main

import (
    "fmt"
    "time"
)

func main() {
    now := time.Date(2026, 1, 1, 10, 30, 45, 0, time.UTC)
    nextMinute := now.Truncate(time.Minute).Add(time.Minute)
    fmt.Println("now:", now.Format("15:04:05"))
    fmt.Println("next run:", nextMinute.Format("15:04:05"))
    fmt.Println("wait:", nextMinute.Sub(now))
}

त्वरित जाँच

समय-आधारित समय-सारिणी की अपनी समझ जाँचिए।

पुनरावृत्ति

आपने समय-आधारित समय-सारिणी की मूल बातें सीखीं:

  • time पैकेज Sleep, After, Timer और टिकर प्रदान करता है
  • Sleep वाले लूप में विचलन आता है; टिकर समय-सारिणी पर बने रहते हैं
  • time.Until से लक्ष्य समय तक की अवधियों की गणना कीजिए
  • बीते समय को मापने के लिए time.Since और मोनोटोनिक घड़ी का उपयोग कीजिए
शुरुआत निःशुल्क

एआई शिक्षक के साथ Go सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
51
पाठ
203

अक्सर पूछे जाने वाले प्रश्न

क्या “समय-आधारित शेड्यूलिंग” पाठ निःशुल्क है?

हाँ — Go Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “समय-आधारित शेड्यूलिंग” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Go Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“समय-आधारित शेड्यूलिंग” में मैं क्या सीखूँगा?

आवधिक कार्य चलाएँ आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Go Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Go Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Go Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 1वाँ पाठ है।

“समय-आधारित शेड्यूलिंग” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Go Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Go Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. समय-आधारित शेड्यूलिंग
  2. robfig/cron लाइब्रेरी
  3. अंतरालों के लिए Ticker
  4. कार्य का सुव्यवस्थित शटडाउन
← Go Academy पर वापस जाएँ