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.

Izsauciet šī opener paša open metodi, kad maršruts pieder pārbaudei. Piemēra HTTP galapunkts var nākt no jūsu pakalpojuma vai no HTTP proxy saraksta publiskām pārbaudēm. Fragments ilustrē īpašumtiesības; tas nenosaka pilnu autentifikācijas vai veselības politiku. Turiet visus kontam raksturīgos apstrādātājus piesaistītus paredzētajam klientam.

urllib.request.install_opener() maina visai procesai kopīgo noklusējumu, ko izmanto vēlākie moduļa līmeņa urlopen() izsaukumi. Tāpēc pārbaudītājs, kas iet cauri proxy, var atstāt nesaistītus pieprasījumus izmantojam tā pēdējo galapunktu. Īslaicīga instalēšana un atjaunošana tīrīšanas laikā joprojām ļauj vienlaicīgiem pieprasījumiem darboties koplietotās izmaiņas laikā.

socket.setdefaulttimeout() līdzīgi maina noklusējuma vērtības vēlāk izveidotiem socketiem. Izmantojiet darbības līmeņa taimautu, kad to drīkst saņemt tikai pārbaude.

Aizveriet pārbaudes atbildes un turiet rezultātus konkrētus: HTTP kļūdas atbilde nav automātiski miris proxy klausītājs. Ja sinhronu urllib pārbaudi izmanto asinhronā pakalpojumā, pārvietojiet bloķējošo darbu uz piemērotu worker; šis izpildes lēmums nepadara globālo opener izmaiņu izolētu.

Pārbaudei vajadzētu atgriezt savu novērojumu, neatstājot citu tīkla politiku aiz sevis. Tās pašas klienta objekts un ierobežotā darbība padara šo robežu skaidru.

Saistītie raksti