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 پر لامتناہی پولنگ لوپ سے مت بدلیں۔

متعلقہ مضامین