Evita bidliet globali fl-opener urllib fil-verifikaturi tal-proxy
Żomm il-verifiki tal-proxy urllib fil-proprju opener tagħhom minflok ma tissostitwixxi l-imġiba u l-ħinijiet predefiniti tal-proċess kollu.
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.Sejjaħ il-metodu open proprju ta' dan l-opener meta rotta tkun tal-verifika. Il-punt tat-tmiem HTTP tal-eżempju jista' jiġi mis-servizz tiegħek jew mil-lista tal-proxy HTTP għal verifiki pubbliċi. Is-silta turi s-sjieda; ma tiddefinixxix il-politika sħiħa tal-awtentikazzjoni jew tas-saħħa. Żomm kwalunkwe handler speċifiku għall-kont marbut ma' dak il-klijent maħsub.
urllib.request.install_opener() ibiddel il-valur predefinit tal-proċess kollu li jużaw is-sejħiet urlopen() aktar tard fil-livell tal-modulu. Għalhekk verifikatur li jdur minn proxys jista' jħalli talbiet mhux relatati jużaw l-aħħar punt tat-tmiem tiegħu. L-installazzjoni temporanja u r-restawr waqt it-tindif għadhom iħallu talbiet konkorrenti jaħdmu matul il-bidla kondiviża.
socket.setdefaulttimeout() bl-istess mod ibiddel il-valuri predefiniti għal sockets maħluqa wara. Uża l-ħin fil-livell tal-operazzjoni meta tkun biss il-verifika li għandha tirċevih.
Agħlaq it-tweġibiet tal-verifika u żomm ir-riżultati speċifiċi: tweġiba ta' żball HTTP mhix awtomatikament semmiegħ tal-proxy mejjet. Jekk verifika urllib sinkronika tintuża f'servizz asinkroniku, ċaqlaq ix-xogħol li jimblokka għal worker adatt; dik id-deċiżjoni ta' eżekuzzjoni ma tagħmilx il-bidla globali tal-opener iżolata.
Verifika għandha tirritorna l-osservazzjoni tagħha mingħajr ma tħalli politika oħra tan-netwerk warajha. L-oġġett tal-klijent tagħha u l-operazzjoni limitata jagħmlu dak il-konfini espliċitu.