Dlaczego Requests otwiera więcej połączeń niż pool_maxsize
Użyj pool_block dla ograniczonej puli i dodaj budżet na poziomie aplikacji, gdy limit ma obejmować cały ruch przez proxy.
Przy domyślnym pool_block=False pool_maxsize ogranicza połączenia utrzymywane w puli, a nie każde jednoczesne połączenie. Requests może tworzyć dodatkowe i następnie je odrzucać.
Dla ograniczonej puli używanej przez żądania HTTPS istniejącej sesji:
from requests.adapters import HTTPAdapter
adapter = HTTPAdapter(
pool_connections=10,
pool_maxsize=4,
pool_block=True,
)
session.mount("https://", adapter)Montowanie wybiera docelowe adresy URL HTTPS. Żądania HTTP korzystają z adaptera zamontowanego pod http://.
| Wejście | Co kontroluje |
|---|---|
| pool_connections | Ile puli menedżer przechowuje w pamięci podręcznej |
| pool_maxsize | Połączenia w obrębie jednej puli |
| pool_block=True | Czekanie na połączenie z puli zamiast tworzenia dodatkowego |
Requests przechowuje też w pamięci podręcznej menedżery proxy według adresu URL proxy. Te wartości nie tworzą jednego całkowitego limitu dla zmiennej listy proxy i celów. Użyj budżetu współbieżności na poziomie aplikacji, jeśli wymaganiem jest, aby cała praca przechodziła przez jednego pośrednika.
Blokowanie czyni zwalnianie odpowiedzi niezbędnym: zużywaj treści lub zamykaj odpowiedzi strumieniowe, aby oczekująca praca mogła postępować. Adapter Requests nie zapewnia osobnego limitu czasu dla tego oczekiwania na pulę w pokazanym układzie.