لماذا يفتح 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)يختار التثبيت عناوين URL الوجهة لـ HTTPS. أما طلبات HTTP فتستخدم المحوّل المثبَّت تحت http://.
| المدخل | ما الذي يتحكم فيه |
|---|---|
| pool_connections | كم عدد البرك التي يخزّنها المدير |
| pool_maxsize | الاتصالات داخل البركة |
| pool_block=True | الانتظار لاتصال من البركة بدل إنشاء اتصال إضافي |
يخزّن Requests أيضًا مديري الوسائط حسب عنوان URL للوسيط. لا تشكّل هذه القيم حدًّا إجماليًا واحدًا عبر قائمة دوّارة من الوسائط والوجهات. استخدم ميزانية تزامن على مستوى التطبيق إذا كان المطلوب هو مرور كل العمل عبر وسيط واحد.
الحجب يجعل تحرير الاستجابات ضروريًا: استهلك الأجسام أو أغلق الاستجابات المتدفقة حتى يتمكن العمل المنتظر من المتابعة. ولا يوفّر محوّل Requests مهلة منفصلة لانتظار البركة في الترتيب الموضح.