Gebruik ProxyManager met herprobeer afgeskakel vir ’n klein urllib3-proxytoets. Dit rapporteer die eerste poging eerder as om langer aan ’n inskrywing wat nie meer werk nie te probeer. In ’n uv-bestuurde projek:

uv add urllib3

Vervang die dokumentasie-eindpunt met ’n HTTP-proxy van jou diens of die HTTP-instaanbedienerlys en stuur die versoek deur daardie bestuurder:

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()

Lees eers response.status en ondersoek dan response.data. Dit is urllib3 se velde; Requests se status_code en text is nie plaasvervangers nie. ’n Webwerf kan ’n weiering deur ’n werkende proxy stuur. ’n Uitsondering vóór ’n antwoord dui eerder aan dat die versoek nie voltooi is nie.

retries=False is ’n diagnostiese keuse, nie ’n produksiebeleid vir herprobeer nie. Die verbindingsinstelling van 5 sekondes en leesinstelling van 10 sekondes beperk hul eie fases; dit tel nie op tot ’n gewaarborgde totale sperdatum van 15 sekondes nie. DNS en antwoordvordering kan die totale wagtyd beïnvloed.

Die voorbeeld laai die inhoud vooraf en maak die bestuurder se poele aan die einde skoon. Vir herhaalde versoeke deur dieselfde eindpunt, behou die bestuurder totdat die werk klaar is sodat verbindings hergebruik kan word. Om na preload_content=False oor te skakel verander dié lewensiklus: die aanroeper moet die gestroomde antwoord lees en vrystel.

Kies die bestuurder wat by die luisterdiens pas. ’n Gewone PoolManager raak nie proxybewus omdat ’n URL elders gestoor is nie; SOCKS gebruik urllib3.contrib.socks.SOCKSProxyManager en sy opsionele afhanklikhede. Die kode hier bo volg die HTTP-ProxyManager-pad.

Verwante artikels