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.

Pokličite lastno metodo open tega openerja, ko pot pripada preverjanju. Končna točka HTTP iz primera lahko prihaja iz vaše storitve ali s seznama proxy HTTP za javna preverjanja. Odlomek ponazarja lastništvo; ne opredeljuje celotne politike preverjanja pristnosti ali zdravja. Vse obravnavalnike, specifične za račun, imejte pritrjene na predvidenega odjemalca.

urllib.request.install_opener() spremeni procesno privzeto vrednost, ki jo uporabljajo poznejši klici urlopen() na ravni modula. Preverjalnik, ki se sprehaja po proxyjih, lahko zato pusti nepovezane zahteve na svoji zadnji končni točki. Začasna namestitev in obnovitev med čiščenjem še vedno omogočata sočasnim zahtevam delovanje med skupno spremembo.

socket.setdefaulttimeout() podobno spremeni privzete vrednosti za vtičnice, ustvarjene pozneje. Uporabite časovno omejitev na ravni operacije, ko jo mora prejeti samo preverjanje.

Zapirajte odgovore preverjanja in ohranite rezultate konkretne: odgovor z napako HTTP ni samodejno mrtev poslušalec proxy. Če se sinhrono urllib preverjanje uporablja v asinhroni storitvi, premaknite blokirajoče delo k ustreznemu delavcu; ta odločitev o izvajanju globalne spremembe openerja ne naredi izolirane.

Preverjanje bi moralo vrniti svoje opažanje, ne da bi za seboj pustilo drugo omrežno politiko. Njegov lastni odjemalski objekt in omejena operacija naredita to mejo jasno.

Sorodni članki