რატომ ხსნის 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 დანიშნულების URL-ებს. HTTP მოთხოვნები იყენებს http://-ის ქვეშ დამონტაჟებულ ადაპტერს.
| შეყვანა | რას აკონტროლებს |
|---|---|
| pool_connections | რამდენ აუზს ინახავს მენეჯერი ქეშში |
| pool_maxsize | კავშირები ერთი აუზის შიგნით |
| pool_block=True | აუზის კავშირის ლოდინი დამატებითის შექმნის ნაცვლად |
Requests ასევე ქეშავს პროქსის მენეჯერებს პროქსის URL-ის მიხედვით. ეს მნიშვნელობები არ ქმნის ერთ საერთო ზედა ზღვარს მბრუნავი პროქსებისა და დანიშნულებების სიისთვის. გამოიყენეთ აპლიკაციის დონის პარალელურობის ბიუჯეტი, თუ მოთხოვნაა, რომ მთელი სამუშაო ერთი შუამავლის გავლით წავიდეს.
ბლოკირება პასუხების გათავისუფლებას აუცილებელს ხდის: მოიხმარეთ სხეულები ან დახურეთ ნაკადოვანი პასუხები, რათა მოლოდინში მყოფმა სამუშაომ გააგრძელოს. Requests-ის ადაპტერი ნაჩვენები განლაგებით არ იძლევა ცალკე ვადას ამ აუზის ლოდინისთვის.