Saihestu urllib opener-en aldaketa globalak proxy egiaztatzaileetan
Mantendu urllib proxy egiaztapenak beren opener propioan, prozesu osoko bideratze eta denbora-muga lehenetsiak ordezkatu beharrean.
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.Deitu opener honen open metodoari bide bat egiaztapenarena denean. Adibideko HTTP amaierako puntua zure zerbitzutik edo egiaztapen publikoetarako HTTP proxy zerrendatik etor daiteke. Zatiak jabetza erakusten du; ez ditu autentifikazio edo osasun politika osoa definitzen. Mantendu kontuaren berariazko edozein handler helburuko bezero horri lotuta.
urllib.request.install_opener() geroagoko module mailako urlopen() deiek erabiltzen duten prozesu osoko lehenetsia aldatzen du. Beraz, proxyen bidez ibiltzen den egiaztatzaile batek erlaziorik gabeko eskaerak bere azken amaierako puntua erabiliz utz ditzake. Behin-behinean instalatzeak eta garbiketan berrezartzeak oraindik baimendu egiten die aldi bereko eskaerei aldaketa partekatuan zehar exekutatzen.
socket.setdefaulttimeout() era berean aldatzen ditu geroago sortutako socketen lehenetsiak. Erabili eragiketa mailako denbora-muga egiaztapenak bakarrik jaso behar duenean.
Itxi egiaztapenaren erantzunak eta mantendu emaitzak zehatzak: HTTP errore erantzun bat ez da automatikoki proxy entzule hil bat. urllib egiaztapen sinkronoa zerbitzu asinkrono batean erabiltzen bada, eraman blokeatzen duen lana langile egokira; exekuzio erabaki horrek ez du opener-en aldaketa globala isolatuta uzten.
Egiaztapen batek bere behaketa itzuli behar du beste sare politika bat atzean utzi gabe. Bere bezero objektuak eta eragiketa mugatuak muga hori esplizitu egiten dute.