from urllib.request import ProxyHandler, build_opener

def make_proxy_opener(proxy_uri):
    return build_opener(ProxyHandler({
        "http": proxy_uri,
        "https": proxy_uri,
    }))

opener = make_proxy_opener("http://proxy.example.net:8080")
# Use opener.open(destination, timeout=10) for this route.

Kall den eigen open-metoden til denne openeren når ei rute høyrer til sjekken. HTTP-endepunktet i dømet kan koma frå tenesta di eller frå HTTP-proxylista for offentlege sjekkar. Utdraget syner eigarskap; det definerer ikkje den fulle autentiserings- eller helsepolitikken. Hald eventuelle kontospeifikke handtarar knytte til den tiltenkte klienten.

urllib.request.install_opener() endrar den prosessomfattande standarden som seinare urlopen()-kall på modulnivå brukar. Ein sjekkar som går gjennom proxyar kan difor la urelaterte førespurnader bruke sitt siste endepunkt. Mellombels installasjon og attoppretting under opprydding lèt framleis samtidige førespurnader køyre under den delte endringa.

socket.setdefaulttimeout() endrar på same måte standardane for sockets som vert oppretta seinare. Bruk tidsavbrotet på operasjonsnivå når berre sjekken skal få det.

Lat sjekkens svar att og hald resultata spesifikke: eit HTTP-feilsvar er ikkje automatisk ein død proxy-lyttar. Om ein synkron urllib-sjekk vert brukt i ei asynkron teneste, flytt blokkerande arbeid til ein høveleg worker; den utføringsavgjerda gjer ikkje den globale opener-endringa isolert.

Ein sjekk bør gje att observasjonen sin utan å late ein annan nettverkspolitikk liggje att. Det eigne klientobjektet og den avgrensa operasjonen gjer den grensa eksplisitt.

Relaterte artiklar