कार्यक्रम जीवनचक्र
असमर्थिक कार्यक्रम अपने जीवनचक्र के दौरान कई स्थितियों से गुजरते हैं। इस पृष्ठ पर कार्यक्रम के जीवनचक्र को सृजन से हटाने तक दर्ज करता है।
जब आप एक कार्यक्रम को कतार में डालते हैं, तो असिंक में सुनिश्चित होता है कि स्थायी समय पर हैंडलर को बुलाया जाता है। इस प्रक्रिया के दौरान, कार्यक्रम अलग-अलग जीवनचक्र स्थितियों से गुजर सकता है।
यहां विभिन्न जीवनचक्र स्थितियों की एक सूची है:
-
Scheduled: कार्यक्रम भविष्य में प्रसंस्करण के लिए प्रतीक्षा कर रहा है (केवल
ProcessAt
याProcessIn
विकल्पों वाले कार्यक्रमों के लिए लागू होता है)। - Pending: कार्यक्रम प्रसंस्करण के लिए तैयार है और रिक्त कर्मी द्वारा उठाया जाएगा।
- Active: कार्यकर्ता द्वारा प्रसंस्करण किया जा रहा है (अर्थात, हैंडलर कार्यक्रम का प्रसंस्करण कर रहा है)।
- Retry: कार्यकर्ता को कार्यक्रम का प्रसंस्करण करने में असमर्थता होती है, और कार्यक्रम भविष्य में पुनः प्रयास के लिए प्रतीक्षा कर रहा है।
- Archived: कार्यक्रम ने अधिकतम पुनः प्रयासों तक पहुंच गया है और स्वयंसेवा जांच के लिए संग्रहीत किया गया है।
-
Completed: कार्यक्रम को सफलतापूर्वक प्रसंस्कृत कर दिया गया है और इसे आवश्यक समय तक रिटेंट किया जाएगा (केवल
Retention
विकल्प वाले कार्यक्रमों के लिए लागू होता है)।
चलो, एक उदाहरण के साथ विभिन्न जीवनचक्र स्थितियों की ओर देखते हैं।
// कार्यक्रम 1: 24 घंटे में प्रसंस्कृत करने के लिए निर्धारित किया गया।
client.Enqueue(task1, asynq.ProcessIn(24*time.Hour))
// कार्यक्रम 2: तुरंत प्रसंस्कृत करने के लिए कतार में डाला गया।
client.Enqueue(task2)
// कार्यक्रम 3: रिटेंशन विकल्प के साथ कतार में डाला गया।
client.Enqueue(task3, asynq.Retention(2*time.Hour))
इस उदाहरण में, कार्यक्रम 1
अगले 24 घंटों तक Scheduled स्थिति में रहेगा। 24 घंटे बाद, यह Pending स्थिति में और फिर Active स्थिति में प्रवेश करेगा। यदि कार्यक्रम सफलतापूर्वक प्रसंस्कृत किया जाता है, तो कार्यक्रम डेटा को रेडिस से हटा दिया जाएगा। अगर कार्यक्रम को सफलतापूर्वक प्रसंस्कृत नहीं किया जाता है (अर्थात, हैंडलर त्रुटि या आकस्मिकता देता है), तो कार्यक्रम Retry स्थिति में आएगा पुनः प्रयासों के लिए। एक समय अवधि के बाद, कार्यक्रम पुनः Pending स्थिति में और फिर Active स्थिति में प्रवेश करेगा। यह चक्र सफलतापूर्वक प्रसंस्कृत किया जाए या पुनः प्रयासों को समाप्त कर दिया जाए। इसके बाद, कार्यक्रम Archived स्थिति में चला जाएगा।
इस उदाहरण में, कार्यक्रम 2
और कार्यक्रम 1
के बीच एकमात्र अंतर यह है कि कार्यक्रम 2
Scheduled स्थिति को छोड़कर सीधे Pending स्थिति में प्रवेश करता है।
कार्यक्रम 3
को 2 घंटे की रिटेंशन विकल्प के साथ कतार में डाला गया है। इसका अर्थ है कि जब कार्यकर्ता कार्यक्रम 3
को सफलतापूर्वक प्रसंस्कृत करेगा, तो कार्यक्रम 2 घंटे तक Completed स्थिति में रहेगा, फिर कतार से हटा दिया जाएगा। डिफ़ॉल्ट रूप से, यदि किसी कार्यक्रम के पास एक रिटेंशन विकल्प सेट नहीं होता है, तो उसे पूरा होने के बाद तुरंत कतार से हटा दिया जाएगा।
नीचे दिए गए आरेख में स्थिति परिवर्तनों का वर्णन किया गया है।
+-------------+ +--------------+ +--------------+ +-------------+
| | | | | | सफलता | |
| Scheduled |----------->| Pending |--------->| Active |---------> | Completed |
| (वैकल्पिक) | | | | | | (वैकल्पिक) |
+-------------+ +--------------+ +--------------+ +-------------+
^ | |
| | | हटाना
| | विफल |
| | V
| |
| |
+------+-------+ | +--------------+
| | | | |
| Retry |<--------------+------->| Archived |
| | | |
+--------------+ +--------------+