Python urllib: Slökkva á milliþjónum fyrir einn opener
Búðu til urllib-opener sem tengist beint með ProxyHandler({}), án þess að breyta öðrum biðlurum eða umhverfi ferlisins.
Sendu tóma vörpun til ProxyHandler þegar einn urllib-opener á að tengjast beint:
from urllib.request import ProxyHandler, build_opener
direct = build_opener(ProxyHandler({}))
with direct.open("https://example.com/", timeout=10) as response:
print(response.status)
Tóma orðabókin skilgreinir engar leiðir um milliþjóna. Ef vörpuninni er sleppt finnur meðhöndlarinn í staðinn milliþjóna úr umhverfi sínu og stillingum kerfisins. Þessar tvær smíðaleiðir lýsa ólíkum reglum.
Dæmið notar staðalsafn Python og heldur venjulegri HTTPS-sannprófun. with-blokkin lokar svarinu, einnig þegar undantekning veldur því að farið er út úr blokkinni.
Beinar beiðnir og beiðnir um milliþjón í sama forriti
Tveir openers geta fylgt hvor sínum reglum án þess að breyta umhverfisbreytum milli kalla:
from urllib.request import ProxyHandler, build_opener
direct = build_opener(ProxyHandler({}))
proxied = build_opener(ProxyHandler({
"http": "http://127.0.0.1:8080",
"https": "http://127.0.0.1:8080",
}))
with proxied.open("https://example.com/", timeout=10) as response:
print(response.status)
Skiptu út loopback-vistfanginu fyrir þinn HTTP-milliþjón eða veldu úr listanum yfir HTTP-milliþjóna fyrir samanburðinn um milliþjón. Hann getur flutt tenginguna að HTTPS-markinu í gegnum CONNECT ef þjónustan leyfir það. Samskiptaregla og auðkenningarstuðningur hlustandans verða að passa við meðhöndlarann.
Láttu sjálfgefinn opener vera
Kallaðu á direct.open eða proxied.open í gegnum hlutinn sem ber ábyrgð á leiðinni. install_opener breytir sjálfgefna valinu fyrir allt ferlið sem hjálparföll urllib nota; safn sem notar það getur því haft áhrif á óskyldan kóða. Það er óþarft fyrir afmarkaða opener-hlutinn hér að ofan.
Viðfangið timeout er stilling fyrir aðgerð, ekki heildarfrestur í raunverulegum tíma fyrir hverja sendingu. Lestu aðeins gögnin sem verkið þarf og notaðu tímamörk á hærra stigi ef verkið hefur strangan heildartímaramma.
Þessir opener-hlutir breyta ekki biðlara annars safns, fyrirliggjandi ferli eða milliþjónsstillingum vafra.