Pro malou diagnostiku proxy v urllib3 použijte ProxyManager s vypnutým opakováním. Nahlásí první pokus místo zdlouhavého opakování položky, která přestala fungovat. V projektu spravovaném uv:

uv add urllib3

Dokumentační koncový bod nahraďte HTTP proxy své služby nebo položkou ze seznamu HTTP proxy a požadavek proveďte přes tohoto správce:

import urllib3

proxy = urllib3.ProxyManager(
    "http://203.0.113.10:8080",
    timeout=urllib3.Timeout(connect=5, read=10),
    retries=False,
)

try:
    response = proxy.request("GET", "https://example.com/")
    print(response.status)
    print(response.data.decode("utf-8", errors="replace")[:200])
finally:
    proxy.clear()

Nejprve čtěte response.status a pak prohlédněte response.data. To jsou pole urllib3; status_code a text ve stylu Requests nejsou náhradou. Odmítnutí webu může přijít přes fungující proxy. Výjimka před odpovědí naopak znamená, že se požadavek nepodařilo dokončit.

retries=False je diagnostická volba, nikoli produkční politika opakování. Nastavení 5 sekund pro připojení a 10 sekund pro čtení omezují vlastní fáze; nedávají dohromady zaručený celkový limit 15 sekund. DNS a průběh odpovědi mohou celkové čekání ovlivnit.

Příklad předem načítá tělo a nakonec vyčistí fondy spojení správce. Pro opakované požadavky přes stejný bod ponechte správce do konce práce, aby bylo možné spojení znovu použít. Přechod na preload_content=False tento životní cyklus mění: volající musí proudovou odpověď přečíst a uvolnit.

Zvolte správce podle naslouchající služby. Běžný PoolManager nezačne používat proxy jen proto, že je URL uložené jinde; SOCKS používá urllib3.contrib.socks.SOCKSProxyManager a jeho volitelné závislosti. Výše uvedený kód používá cestu HTTP přes ProxyManager.

Související články