HTTP अनुरोध चलिरहँदा स्टपवाचले प्रतीक्षा रोक्न सक्छ। प्रोक्सी प्रयासको तोकिएको समय-बजेट हुँदा रद्द गर्ने सुविधा सञ्चालनलाई नै दिनुहोस्।

पहिले नै प्रोक्सी कन्फिगर गरिएको HttpClient भएको आधुनिक .NET अनुप्रयोगका लागि:

using var budget = new CancellationTokenSource(TimeSpan.FromSeconds(5));
using var response = await client.GetAsync(
    targetUrl,
    HttpCompletionOption.ResponseHeadersRead,
    budget.Token);
response.EnsureSuccessStatusCode();
string body = await response.Content.ReadAsStringAsync(budget.Token);

त्यही बजेट तयारीअघि सुरु हुन्छ र बडी पढ्दा पनि सक्रिय रहन्छ। ResponseHeadersRead ले हेडरपछि नियन्त्रण फर्काउँछ, त्यसैले HttpClient को आफ्नै समाप्ति-समयले पछिको बडी-पढाइ बजेट आफै तोक्दैन।

रद्द गर्ने कुरालाई HTTP स्थिति र यातायात त्रुटिबाट अलग राख्नुहोस्। OperationCanceledException दिइएको टोकन वा अर्को कन्फिगर गरिएको समयबाट आउन सक्छ; हरेक असफलतालाई मरेको प्रोक्सी भन्नुको सट्टा सम्बन्धित रद्दीकरण स्रोत जाँच्नुहोस्।

यो प्रोक्सी मार्गको मालिक क्लाइन्ट नै पुनः प्रयोग गर्नुहोस्। एउटा प्रयास रद्द गर्नु भनेको प्रत्येक पछिल्लो अनुरोधका लागि पूरै जडान पूल पुनर्निर्माण गर्नु होइन।

उदाहरणले सीमित आकारको प्रतिक्रिया बडी बफर गर्छ। स्ट्रिमिङ डाउनलोडमा टोकन स्ट्रिम-प्रतिलिपि लूपमा सार्नुहोस् र हरेक निकास मार्गमा प्रतिक्रिया छोड्नुहोस्।

रद्दीकरणले सञ्चालन नीति जनाउँछ, हरेक प्लेटफर्म कार्यका लागि ठ्याक्कै घडीको वाचा होइन। Task.IsCompleted माथि अनन्त पोलिङ लूप राखेर यसलाई नबदल्नुहोस्।

सम्बन्धित लेखहरू