Fyrir litla urllib3-milliþjónsgreiningu skaltu nota ProxyManager með endurtilraunir óvirkar. Þá er fyrsta tilraun birt í stað þess að eyða meiri tíma í færslu sem er hætt að virka. Í verkefni stýrðu með uv:

uv add urllib3

Skiptu skjalaendapunktinum út fyrir HTTP-milliþjón frá þjónustunni þinni eða listanum yfir HTTP-milliþjóna og keyrðu beiðnina í gegnum þann stjóra:

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

Lestu response.status fyrst og skoðaðu síðan response.data. Þetta eru reitir urllib3; status_code og text úr Requests koma ekki í staðinn. Höfnun vefsíðu getur borist í gegnum virkan milliþjón. Undantekning fyrir svar sýnir hins vegar að ekki tókst að ljúka beiðninni.

retries=False er greiningarval, ekki endurtilraunastefna fyrir rekstur. 5 sekúndna tengi- og 10 sekúndna lesstillingar takmarka sína eigin áfanga; þær mynda ekki tryggð 15 sekúndna heildartímamörk. DNS og framvinda svarsins geta haft áhrif á heildarbiðina.

Dæmið forhleður meginmálið og hreinsar tengisöfn stjórans í lokin. Fyrir endurteknar beiðnir um sama endapunkt skaltu halda stjóranum til verkloka svo tengingar nýtist aftur. Að skipta í preload_content=False breytir lífsferlinum: kallandinn verður að lesa og losa streymissvarið.

Veldu stjóra sem passar við hlustandi þjónustuna. Venjulegur PoolManager verður ekki meðvitaður um milliþjón þótt URL sé geymt annars staðar; SOCKS notar urllib3.contrib.socks.SOCKSProxyManager og valfrjálsar háðir þess. Kóðinn hér að ofan fylgir HTTP-ProxyManager-leiðinni.

Tengdir greinar