مهلتهای هر مرحله و ضربالاجل کل درخواست پروکسی
محدودیتهای هر مرحله را از بودجه زمان کل یک عملیات پروکسی، شامل تلاشهای مجدد و مصرف پاسخ، جدا کنید.
مهلت اتصال و خواندن، انتظارهای مشخصی را محدود میکنند. آنها لزوماً کل یک عملیات پروکسی را محدود نمیکنند، عملیاتی که میتواند شامل انتظار در صف، DNS، CONNECT، TLS، تغییرمسیرها، تلاشهای مجدد و مصرف پاسخ نیز باشد.
| محدودیت | دامنه |
|---|---|
| مهلت اتصال | برقراری اتصال بر پایه تعریف کلاینت |
| مهلت بیفعالیتی خواندن | انتظاری بدون پیشرفت مورد انتظار داده |
| ضربالاجل کل | مدت مجاز عملیات کامل |
با بودجه عملیات شروع کنید
از ضربالاجل کل مستندشده کلاینت یا سازوکار لغو، در صورت وجود، در کنار محدودیتهای مرحله استفاده کنید. HTTPX انتظار مخزن، اتصال، خواندن و نوشتن را جدا میکند. Requests اعلام میکند که مهلت آن محدودیت دانلود کامل نیست. curl مهلت انتقال کل را فراهم میکند.
برای نمونه، کاری بیستثانیهای دو ثانیه را در صف، سه ثانیه را در برپاکردن مسیرش و شش ثانیه را در تبادلی ناموفق میگذراند. تلاش بعدیاش تقریباً نُه ثانیه باقی دارد. دادن بیست ثانیه تازه به هر تلاش مجدد بودجه اصلی را دور میریزد.
برای حسابداری زمان سپریشده از ساعت یکنوا استفاده کنید. ضربالاجل مطلق یا مدت باقیمانده را از میان لایههایی که کار را در اختیار دارند منتقل کنید. اگر سازوکار لغو پیرامونی نمیتواند دامنه لازم را اعمال کند، آن محدودیت را صریح بیان کنید.
بدنه و پاکسازی را بگنجانید
متدی که پس از سرآیندها بازمیگردد میتواند خواندن بدنه را بیرون از ضربالاجل خود بگذارد. تصمیم بگیرید بودجه برپایی، دانلود کامل و متناهی، یا جریانی دیرپا با قواعد زندهبودن جداگانه را پوشش میدهد. نمونهای مدرن در .NET برای لغو سرآیندها و بدنه یک توکن را از هر دو مرحله میگذراند.
پیش از آنکه تلاش بعدی ظرفیت مخزن را بگیرد، زمان کافی برای بستن پاسخها و کاملکردن لغو بگذارید. مرحله ناموفق و زمان سپریشده را ثبت کنید؛ خواندنهای تکراری که پیشرفت دارند میتوانند محدودیتهای بیفعالیتی را برآورده کنند در حالی که کار کل بیش از حد طول میکشد.
ضربالاجل دروازه به سمت بالادست مال همان دروازه است. پس از آنکه 504 را برگرداند، بودجه استفادهنشده کلاینت نمیتواند تلاش کاملشده را تمدید کند. هنگام تصمیم درباره اینکه کدام تنظیم باید اصلاح شود، هر زمانسنج را به صاحبش چسبیده نگه دارید.