کام کی دورانیہ
غیر متزامن کام اپنے عمر کے دوران مختلف حالتوں سے گزرتے ہیں۔ یہ صفحہ کسی کام کے عمر کو پیدا ہونے سے لے کر اس کے حذف ہونے تک کی دورانیہ دیکھتا ہے۔
جب آپ کسی کام کو enqueue کرتے ہیں، asynq اندریشی میں کام کو انتہائی دیکھ بھال کرتا ہے تاکہ یہ یقینی وقت پر ہینڈلر کو بلایا جا سکے۔ اس دوران کام مختلف حالتوں سے گزر سکتے ہیں۔
یہاں مختلف دورانیہ کی حالتوں کی فہرست ہے:
-
Scheduled: کام مستقبل کے عمل کے منتظر ہے (صرف
ProcessAt
یاProcessIn
اختیارات کے کاموں کے لئے قابل اطلاق ہے)۔ - Pending: کام عمل کے لئے تیار ہے اور اسے ایک آرامدہ ورکر کے ذریعے منتخب کیا جائے گا۔
- Active: کام ایک ورکر کے ذریعے پروسیس کیا جا رہا ہے (یعنی ہینڈلر کام کا پروسیسنگ کر رہا ہے)۔
- Retry: ورکر کام کو پروسیس نہیں کر سکا ہے، اور کام مستقبل کے لئے ریٹرائی کا انتظار کر رہا ہے۔
- Archived: کام نے زیادہ سے زیادہ ریٹرائی کے کوششیں کی ہیں، اور آرکائیو میں محفوظ کیا گیا ہے تاکہ اس پر سوچا جا سکے۔
- Completed: کام کامیابی سے پروسیس ہوگیا ہے اور رٹینشن وقت کے ختم ہونے تک محفوظ رہے گا (صرف رٹینشن اختیار کے کاموں کے لئے قابل اطلاق ہے)۔
چلیں ایک مثال کے ساتھ دیکھیں کہ مختلف دورانیہ کی حالتیں کیسے ہوتی ہیں۔
// کام 1: 24 گھنٹوں کے لئے پروسیسنگ کے لئے منظور شدہ ہے۔
client.Enqueue(task1, asynq.ProcessIn(24*time.Hour))
// کام 2: فوری پروسیسنگ کے لئے ان کیو کیا گیا ہے۔
client.Enqueue(task2)
// کام 3: رٹینشن اختیار کے ساتھ کیو کیا گیا ہے۔
client.Enqueue(task3, asynq.Retention(2*time.Hour))
اس مثال میں، Task 1
اگلے 24 گھنٹوں تک Scheduled حالت میں رہے گا۔ 24 گھنٹوں بعد، یہ Pending حالت میں منتقل ہوگا اور پھر Active حالت میں۔ اگر کام کامیابی سے پروسیس ہوتا ہے، تو کام کا ڈیٹا ریڈس سے حذف ہوجائے گا۔ اگر کام کامیابی سے پروسیس نہیں ہوتا ہے (یعنی ہینڈلر ایک ایررر کو واپس کرتا ہے یا پینکس ہوتا ے تو) تو کام کو Retry حالت میں لے جائے گا مستقبل کے نئے کوششیں کے لئے۔ ایک مقامی وقت کے بعد، کام دوبارہ Pending حالت میں اور پھر Active حالت میں منتقل ہو جائے گا۔ یہ چکر جاری رہے گا جب تک کام کامیابی سے پروسیس نہیں ہوجاتا ہے یا ریٹرائی کی کوششوں کو ختم نہیں ہو جاتا۔ اس کیس میں، کام Archived حالت میں منتقل ہوجائے گا۔
اس مثال میں، Task 2
اور Task 1
کے درمیان صرف اتنا فرق ہے کہ Task 2
نے Scheduled حالت کو چھوڑ کر سیدھے طریقے سے Pending حالت میں داخل ہوگیا ہے۔
Task 3
کو 2 گھنٹے کی رٹینشن اختیار کے ساتھ این کیو کیا گیا ہے۔ یہ مطلب ہوتا ہے کہ جب کوئی ورکر Task 3
کو کامیابی سے پروسیس کرتا ہے تو یہ کام 2 گھنٹے تک Completed حالت میں رہے گا پھر یہ کیو قو منسلک ہوجائے گا۔ پہلے کام کو جو رٹینشن اختیار نہیں رکھتا ہے، وہ فوراً ہٹا دیا جاتا ہے۔
نیچے دیا گیا خاکہ حالات کے منتقلیوں کو وضاحت دیتا ہے۔
+-------------+ +--------------+ +--------------+ +-------------+
| | | | | | Success | |
| Scheduled |----------->| Pending |--------->| Active |---------> | Completed |
| (Optional) | | | | | | (Optional) |
+-------------+ +--------------+ +--------------+ +-------------+
^ | |
| | | حذف کرنا
| | ناکام |
| | V
| |
| |
+------+-------+ | +--------------+
| | | | |
| Retry |<--------------+------->| Archived |
| | | |
+--------------+ +--------------+