ডেডলাইনটি সেই কাজটিতে দিন যা নেটওয়ার্কের কাজ বাতিল করতে পারে। প্রক্সি দিয়ে কনফিগার করা বিদ্যমান একটি .NET HttpClient-এর জন্য:

using var deadline = new CancellationTokenSource(TimeSpan.FromSeconds(20));
using var response = await client.GetAsync(uri, deadline.Token);

অ্যাপ্লিকেশন client ও uri সরবরাহ করে। এই ওভারলোডটি বাতিলকরণ টোকেন গ্রহণ করে; এর টাস্কের জন্য অপেক্ষার চারপাশে একটি টাইমআউট কেবল ওই কলারের অপেক্ষাই সীমিত করবে। সম্পূর্ণতার ফ্ল্যাগ পোল করলেও একই সমস্যা: সকেট ও ওয়ার্কাররা ব্যস্ত থাকলেও কলার চলে যেতে পারে।

বাতিলকরণ ক্লায়েন্টের বাস্তবায়ন ও পরিষ্কার করার পথ অনুসরণ করে। এটি প্রতিশ্রুতি দেয় না যে প্রতিটি নিম্নস্তরের কাজ নির্দিষ্ট নির্দেশনায় থামবে। ওই পথটি শেষ হতে দিন এবং অপারেশন যে সম্পদগুলোর মালিক সেগুলো ছেড়ে দিন। ডিজাইনে আলাদাভাবে নিয়ন্ত্রিত বডি পড়া অন্তর্ভুক্ত করুন; আধুনিক .NET ResponseHeadersRead অপারেশনের জন্য, একই টোকেন বডি পড়ার মধ্য দিয়ে পাঠান। অন্য ক্লায়েন্টরা নিজেদের বাতিলকরণ, অ্যাবর্ট ও পরিষ্কার করার ইন্টারফেস দেয়।

পুনরায় চেষ্টার জন্য আগের চেষ্টার একটি ফলাফল দরকার। তার শনাক্তকারী ও নির্বাচিত প্রক্সি রাখুন, প্রয়োজনে বাতিলকরণ চান এবং প্রতিস্থাপন অনির্দিষ্টকাল ধরে শুরু করতে করতে কাজটি হারানো এড়ান। নাহলে একটি ধীর এন্ডপয়েন্ট অ্যাপ্লিকেশন যত দ্রুত কাজ ছাড়ে তার চেয়ে দ্রুত কাজ জমাতে পারে।

দূরবর্তী ফলাফলের জন্য আলাদা ব্যবস্থাপনা দরকার। বাতিলকরণ ঘটার সময় গন্তব্যটি ইতিমধ্যে একটি জমা পেয়ে থাকতে পারে। অ্যাপ্লিকেশনের পুনরুদ্ধার বা idempotency নীতি ব্যবহার করুন; স্থানীয় কাজ থামানো দূরবর্তী কাজকে ফিরিয়ে দেয় না।

সম্পর্কিত নিবন্ধ