چرا Requests بیش از pool_maxsize اتصال باز میکند
برای یک استخر محدود از pool_block استفاده کنید و وقتی حد باید تمام ترافیک عبوری از یک پروکسی را پوشش دهد، بودجهای در سطح برنامه اضافه کنید.
با پیشفرض pool_block=False، مقدار pool_maxsize تعداد اتصالهای نگهداشتهشده در استخر را محدود میکند، نه هر اتصال همزمان را. Requests میتواند اتصالهای اضافی بسازد و سپس آنها را کنار بگذارد.
برای استخر محدودی که درخواستهای HTTPS یک نشست موجود از آن استفاده میکند:
from requests.adapters import HTTPAdapter
adapter = HTTPAdapter(
pool_connections=10,
pool_maxsize=4,
pool_block=True,
)
session.mount("https://", adapter)سوارکردن، نشانیهای مقصد HTTPS را انتخاب میکند. درخواستهای HTTP از آداپتوری استفاده میکنند که زیر http:// سوار شده است.
| ورودی | چه چیزی را کنترل میکند |
|---|---|
| pool_connections | مدیر چند استخر را در حافظه نهان نگه میدارد |
| pool_maxsize | اتصالهای درون یک استخر |
| pool_block=True | انتظار برای اتصال استخر بهجای ساختن اتصال اضافی |
Requests مدیرهای پروکسی را نیز بر اساس نشانی پروکسی در حافظه نهان نگه میدارد. این مقادیر یک سقف کلی واحد برای فهرست چرخشی پروکسیها و مقصدها تشکیل نمیدهند. اگر الزام این است که تمام کار از یک واسطه عبور کند، از بودجه همزمانی در سطح برنامه استفاده کنید.
مسدودسازی آزادسازی پاسخها را ضروری میکند: بدنهها را مصرف کنید یا پاسخهای جریانی را ببندید تا کار در انتظار بتواند ادامه یابد. آداپتور Requests در چیدمان نشاندادهشده مهلت جداگانهای برای این انتظار استخر فراهم نمیکند.