টাস্ক রক্ষণা

ডিফল্ট ভাবে, যখন হ্যান্ডলার দ্বারা টাস্কটি সফলভাবে প্রসেস করা হয় (অর্থাৎ, হ্যান্ডলার.প্রসেসটাস্ক নিল রিটার্ন করে), তখন টাস্কটি কিউ থেকে মুছে যাবে। তবে, যদি আপনি চান যে টাস্কটি সম্পাদনা শেষে (যেমন, পরিদর্শনের উদ্দেশ্যে) কিউতে রক্ষণাধীন থাকে, তাহলে আপনি টাস্কের জন্য রক্ষণা মেয়াদ নির্ধারণ করতে পারেন।

নীচে উদাহরণ দেয়া হল রিটেনশন বিকল্প ব্যবহার করে যে টাস্কটি সম্পাদনা শেষে কিউতে 24 ঘণ্টা রক্ষণা করা উচিত তা নির্ধারণ করার জন্য।

// টাস্ক শুরু করার সময় বিকল্প সেট করুন।
task := asynq.NewTask("my_task", payload, asynq.Retention(24 * time.Hour))

// অন্যথায়, টাস্কটি কিউতে ধারণ করার সময় বিকল্প সেট করুন।
info, err := client.Enqueue(task, asynq.Retention(24 * time.Hour))

এই বিকল্প নির্ধারণ করার পরে, আপনি সিএলআই বা ওয়েব ইউআই ব্যবহার করে সম্পূর্ণ করার টাস্ক দেখতে পারবেন।

টাস্ক ফলাফল

যদি আপনি টাস্ক প্রসেসিং সময় সংবর্ধিত কিছু ডেটা সংরক্ষণ করতে চান, এবং যদি এই ডেটা কেবলমাত্র টাস্কের জীবনকালপর্যন্ত প্রয়োজন থাকে (অর্থাৎ, টাস্কটি কিউ থেকে মুছে যাবার পর্যন্ত), তাহলে ডেটা টাস্কের সাথে সংরক্ষণ করতে পারেন।

যখন রেডিসে ডেটা লিখতে এবং লিখা ডেটা টাস্কের সাথে যুক্ত করতে প্রয়োজন হয়, রেজাল্টরাইটার ব্যবহার করুন।

নোট: দয়া করে মনে রাখবেন যে রেডিসে লিখতে যে পরিমাণ ডেটা রাখা দরকার, সেটা ভালো হলো একটি ডিস্ক-ভিত্তিক স্টোরেজ সিস্টেম (উদাহরণস্বরূপ, একটি এসকিউএল ডাটাবেস) ব্যবহার করা।

// হ্যান্ডলার কোডে।
func MyHandler(ctx context.Context, task *asynq.Task) error {
    res, err := DoStuff(ctx, task)
    if err != nil {
        return fmt.Errorf("failed to process task: %v", err)
    }
    if _, err := task.ResultWriter().Write(res); err != nil {
        return fmt.Errorf("failed to write task result: %v", err)
    }
    return nil
}

উপরে উল্লিখিত রিটেনশন বিকল্প ব্যবহার করলে, আপনি কিউতে রক্ষিত ডেটা যাচাই করতে পারবেন সিএলআই এবং ওয়েব ইউআই ব্যবহার করে। এছাড়াও, Inspector.GetTaskInfo এবং Inspector.ListCompletedTasks ব্যবহার করে আপনি প্রোগ্রামেটিকালি ফলাফল ডেটা অ্যাক্সেস করতে পারবেন।