ทำไม 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 ไม่ได้ให้เวลาหมดอายุแยกต่างหากสำหรับการรอพูลนี้ในการจัดวางที่แสดง