Requests neden pool_maxsize'dan daha fazla bağlantı açar
Sınırlı bir havuz için pool_block kullanın ve sınırın bir proxy üzerinden tüm trafiği kapsaması gerekiyorsa uygulama düzeyinde bütçe ekleyin.
Varsayılan pool_block=False ile pool_maxsize bir havuzda tutulan bağlantıları sınırlar, her eşzamanlı bağlantıyı değil. Requests ek bağlantılar oluşturup bunları sonradan atabilir.
Mevcut bir oturumun HTTPS isteklerinin kullandığı sınırlı bir havuz için:
from requests.adapters import HTTPAdapter
adapter = HTTPAdapter(
pool_connections=10,
pool_maxsize=4,
pool_block=True,
)
session.mount("https://", adapter)Bağlama HTTPS hedef URL'lerini seçer. HTTP istekleri http:// altına bağlanan bağdaştırıcıyı kullanır.
| Girdi | Neyi denetler |
|---|---|
| pool_connections | Yöneticinin kaç havuz önbelleğe aldığı |
| pool_maxsize | Bir havuz içindeki bağlantılar |
| pool_block=True | Ek bir bağlantı oluşturmak yerine havuz bağlantısını beklemek |
Requests ayrıca proxy yöneticilerini proxy URL'sine göre önbelleğe alır. Bu değerler dönen bir proxy ve hedef listesi boyunca tek bir toplam üst sınır oluşturmaz. Gereksinim tüm işin tek bir aracıdan geçmesiyse uygulama düzeyinde bir eşzamanlılık bütçesi kullanın.
Engelleme, yanıtların serbest bırakılmasını zorunlu kılar: gövdeleri tüketin veya akış yanıtlarını kapatın ki bekleyen iş ilerleyebilsin. Gösterilen düzenlemede Requests bağdaştırıcısı bu havuz beklemesi için ayrı bir zaman aşımı sağlamaz.