টাস্ক লাইফসাইকেল

অ্যাসিঞ্ক্রোনাস টাস্কের জীবনচক্রের মধ্যে একাধিক অবস্থা থেকে যায়। এই পৃষ্ঠাটি টাস্কের জীবনচক্র রেকর্ড করে যা সৃষ্টি থেকে মুছে যাওয়া পর্যন্ত।

আপনি যখন একটি টাস্ক ইনকিউ করেন, অ্যাসিঞ্ক্রো সময়ে নির্দিষ্ট সময়ে হ্যান্ডলারকে কল করার জন্য টাস্কটি নিয়ন্ত্রণে রাখে। এই প্রক্রিয়ার সময় টাস্কটি বিভিন্ন জীবনচক্র অবস্থাগুলি প্রশাসন করতে পারে।

এখানে বিভিন্ন জীবনচক্র অবস্থাগুলির একটি তালিকা দেওয়া আছে:

  • সময়সূচীবদ্ধ: টাস্কটি ভবিষ্যতে প্রসেসিং জন্য অপেক্ষা করছে (শুধুমাত্র ProcessAt বা ProcessIn অপশন সহ টাস্কগুলির জন্য প্রযোজ্য)।
  • অপেক্ষমান: টাস্কটি প্রসেসিং এর জন্য প্রস্তুত এবং খালি শ্রমিক দ্বারা নিযুক্ত হবে।
  • সক্রিয়: একটি শ্রমিক দ্বারা টাস্কটি প্রসেস করা হচ্ছে (অর্থাৎ, হ্যান্ডলারটি টাস্কটি প্রসেস করছে)।
  • রিট্রাই: শ্রমিক টাস্কটি প্রসেস করতে অক্ষম এবং টাস্কটি ভবিষ্যতে পুনরাবৃত্তির জন্য অপেক্ষা করছে।
  • আর্কাইভড: টাস্কটি সর্বাধিক পুনরাবৃত্তি চেষ্টা করা হয়েছে এবং ম্যানুয়াল পর্যবেক্ষণের জন্য আর্কাইভে সংরক্ষিত আছে।
  • সম্পন্ন: টাস্কটি সফলভাবে প্রসেস করা হয়েছে এবং রেটেনশন সময় সমাপ্ত হওয়া পর্যন্ত রয়েছে (শুধুমাত্র Retention অপশন দিয়ে টাস্কগুলির জন্য প্রযোজ্য)।

একটি উদাহরণে ভিও জীবনচক্র অবস্থা গুলি দেখা যাক।

// Task 1: 24 ঘন্টা পরে প্রসেসিং এর জন্য সময়সূচীবদ্ধ।
client.Enqueue(task1, asynq.ProcessIn(24*time.Hour))

// Task 2: তাৎক্ষণিক প্রসেসিং এর জন্য ইঞ্জোইউ করা হয়েছে।
client.Enqueue(task2)

// Task 3: রিটেনশন অপশন দিয়ে ইঞ্জোইউ করা হয়েছে।
client.Enqueue(task3, asynq.Retention(2*time.Hour))

এই উদাহরণে, টাস্ক 1 পরবর্তী 24 ঘন্টা ধরে সময়সূচীবদ্ধ অবস্থায় থাকবে। 24 ঘন্টা পরে, এটি অপেক্ষমান অবস্থায় পরিণত হবে এবং তারপর সক্রিয় অবস্থায় পরিণত হবে। যদি টাস্কটি সফলভাবে প্রসেস করা হয়, তার ডেটা রেডিস থেকে মুছে ফেলা হবে। যদি টাস্কটি সফলভাবে প্রসেস না করা হয় (অর্থাৎ, হ্যান্ডলারটি একটি ত্রুটি প্রত্যাহার বা প্যানিক রিটার্ন করে), তাহলে টাস্কটি রিট্রাই অবস্থায় পরিণত হবে পরের পুনরাবৃত্তির জন্য। একটি সময়-মঞ্চ ধরের পর, টাস্কটি আবার পুনরাবৃত্তির অবস্থায় পরিণত হবে এবং তারপর সক্রিয় অবস্থায় পরিণত হবে। এই চক্রণি চলবে যতটুকু যে টাস্কটি সফলভাবে প্রসেস করা হবে বা পুনরাবৃত্তির চেষ্টা করা যাবে। এরপর, একটি অবস্থানের মধ্যে, টাস্কটি আর্কাইভড অবস্থায় পরিণত হবে।

এই উদাহরণে, টাস্ক 2 এবং টাস্ক 1 এর মাঝে একমাত্র পার্থক্য হল যে টাস্ক 2 সরাসরি অপেক্ষমান অবস্থায় প্রবেশ করে, কিন্তু টাস্ক 1 টি দীর্ঘ সময়সূচীবদ্ধ অবস্থায় থাকবে।

টাস্ক 3 টি একটি 2 ঘন্টা রিটেনশন অপশন দিয়ে ইঞ্জোইউ করা হয়েছে। এটি অর্থ আর্কাইভড অবস্থায় অবস্থা পর্যাপ্ত সময় জীবনযাপন পূর্ণ হওয়া পর্যন্ত 2 ঘন্টা সম্পন্ন অবস্থায় থাকবে। ডিফল্টভাবে, যদি একটি টাস্কের ন রেটেনশন অপশন সেট না থাকে, তাহলে সমাপ্তির পরিবর্তে তা অটোমেটিকভাবে ইঞ্জোইউ হয়ে যাবে।

তথ্যপট নীচেই অবস্থা পরিবর্তনা ব্যাখ্যা করে।

+-------------+            +--------------+          +--------------+           +-------------+
|             |            |              |          |              | সফলভাবে   |             |
|  সময়সূচীবদ্ধ  |----------->|   অপেক্ষমান    |--------->|    সক্রিয়    |---------> |  সম্পন্ন  |
|  (ঐচ্ছিক)   |            |              |          |              |           |  (ঐচ্ছিক) |
+-------------+            +--------------+          +--------------+           +-------------+
                                  ^                       |                            |
                                  |                       |                            | মুছে ফেলা
                                  |                       | ব্যর্থ হয়েছে                  |
                                  |                       |                            V
                                  |                       |
                           +------+-------+               |        +--------------+
                           |              |               |        |              |
                           |    পুনরাবৃত্তি     |<--------------+------->|   আর্কাইভড   |
                           |              |                        |              |
                           +--------------+                        +--------------+