डेडलाइन टोकनसह प्रॉक्सीमधून जाणारी .NET HttpClient विनंती रद्द करा
फक्त कॉलरची वाट पूर्ण करण्याऐवजी प्रॉक्सीची डेडलाइन संपल्यावर नेटवर्क क्रिया स्वतःच रद्द करा.
डेडलाइन त्या क्रियेला द्या जी नेटवर्क काम रद्द करू शकते. प्रॉक्सीद्वारे कॉन्फिगर केलेल्या विद्यमान .NET HttpClient साठी:
using var deadline = new CancellationTokenSource(TimeSpan.FromSeconds(20));
using var response = await client.GetAsync(uri, deadline.Token);अॅप्लिकेशन client आणि uri पुरवते. हे ओव्हरलोड रद्दीकरण टोकन घेते; त्याच्या टास्कच्या प्रतीक्षेभोवतीचा टाइमआउट फक्त त्या कॉलरची वाट मर्यादित करेल. पूर्णता फ्लॅग पोल करण्यातही तीच अडचण आहे: सॉकेट आणि वर्कर व्यस्त असताना कॉलर निघून जाऊ शकतो.
रद्दीकरण क्लायंटची अंमलबजावणी आणि स्वच्छता मार्गाचे अनुसरण करते. ते वचन देत नाही की प्रत्येक खालच्या पातळीची क्रिया अचूक सूचनेवर थांबेल. त्या मार्गाला पूर्ण होऊ द्या आणि क्रियेच्या मालकीची संसाधने सोडवा. डिझाइनमध्ये स्वतंत्रपणे नियंत्रित बॉडी वाचन समाविष्ट करा; आधुनिक .NET ResponseHeadersRead क्रियेसाठी, तेच टोकन बॉडी वाचनातून पाठवा. इतर क्लायंट स्वतःचे रद्दीकरण, थांबवणे आणि स्वच्छता इंटरफेस देतात.
पुन्हा प्रयत्नासाठी मागील प्रयत्नाचा निकाल लागतो. त्याची ओळख आणि निवडलेली प्रॉक्सी ठेवा, गरज असल्यास रद्दीकरण मागा आणि बदली अमर्यादपणे सुरू करताना कार्य गमावणे टाळा. अन्यथा संथ एंडपॉइंट अॅप्लिकेशन जितके काम सोडते त्यापेक्षा वेगाने काम साचू शकतो.
दूरच्या निकालासाठी वेगळी हाताळणी लागते. रद्दीकरण होते तेव्हा गंतव्यस्थानाला सबमिशन मिळालेले असू शकते. अॅप्लिकेशनचे पुनर्प्राप्ती किंवा idempotency धोरण वापरा; स्थानिक काम थांबवल्याने दूरची क्रिया रद्द होत नाही.