Mij globale urllib-opener-feroarings yn proxy-kontrôleurs
Hâld urllib-proxyproeven by har eigen opener ynstee fan prosesbrede routing- en time-outstanderts te ferfangen.
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.Rop de eigen open-metoade fan dizze opener oan as in rûte by de proef heart. It HTTP-einpunt fan it foarbyld kin fan jo tsjinst of fan 'e HTTP-proxylist foar iepenbiere proeven komme. It fragmint yllustrearret eigendom; it definiearret net it folsleine autentikaasje- of sûnensbelied. Hâld eventuele akkountspecifike handlers oan 'e bedoelde klant fêst.
urllib.request.install_opener() feroaret de prosesbrede standert dy't lettere urlopen()-oproppen op modulenivo brûke. In kontrôleur dy't troch proxys rint, kin dêrtroch net-relatearre oanfragen meinimme litte mei syn lêste einpunt. Tyldlike ynstallaasje en weromsetten by it opromjen lit lykwols tagelyk oanfragen draaie ûnder de mienskiplike feroaring.
socket.setdefaulttimeout() feroaret likegoed de standerts foar sockets dy't letter oanmakke wurde. Brûk de time-out op operaasjenivo as allinnich de proef dy krije moat.
Slút proefantwurden en hâld har resultaten spesifyk: in HTTP-flaterantwurd is net automatysk in deade proxy-listener. As in syngroane urllib-proef yn in asyngroane tsjinst brûkt wurdt, ferpleats blokkearjend wurk nei in geskikte worker; dy útfieringsbeslissing makket de globale opener-feroaring net isolearre.
In proef heart syn waarnimming werom te jaan sûnder in oar netwurkbelied efter te litten. Syn eigen kliïntobjekt en beheinde operaasje meitsje dy grins eksplisyt.