Iwasan ang Pandaigdig na Pagbabago sa urllib Opener sa mga Proxy Checker
Panatilihin ang mga urllib proxy check sa sarili nilang opener sa halip na palitan ang routing at timeout na default ng buong proseso.
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.Tawagin ang sariling open na pamamaraan ng opener na ito kapag ang ruta ay bahagi ng check. Ang HTTP endpoint sa halimbawa ay maaaring magmula sa iyong serbisyo o sa listahan ng HTTP proxy para sa mga pampublikong check. Inilalarawan ng bahagi ang pagmamay-ari; hindi nito tinutukoy ang buong patakaran sa pagpapatotoo o kalusugan. Panatilihing nakakabit sa nilalayong client ang anumang handler na partikular sa account.
urllib.request.install_opener() binabago ang default ng buong proseso na ginagamit ng mga susunod na tawag sa urlopen() sa antas ng module. Kaya't ang checker na umiikot sa mga proxy ay maaaring mag-iwan ng mga walang kaugnayang kahilingan na gumagamit ng huli nitong endpoint. Ang pansamantalang pag-install at pagpapanumbalik sa paglilinis ay nagpapahintulot pa rin sa mga sabay-sabay na kahilingan na tumakbo habang nasa ibinahaging pagbabago.
socket.setdefaulttimeout() binabago rin ang mga default para sa mga socket na ginawa pagkatapos. Gamitin ang timeout sa antas ng operasyon kapag ang check lamang ang dapat tumanggap nito.
Isara ang mga tugon ng check at panatilihing tiyak ang mga resulta: ang tugon ng error sa HTTP ay hindi awtomatikong patay na tagapakinig ng proxy. Kung ang isang synchronous na urllib check ay ginagamit sa isang async na serbisyo, ilipat ang humaharang na gawain sa angkop na worker; ang desisyong iyon sa pagpapatupad ay hindi ginagawang nakahiwalay ang pandaigdigang pagbabago sa opener.
Dapat ibalik ng check ang obserbasyon nito nang hindi nag-iiwan ng ibang patakaran sa network sa likuran. Ang sarili nitong client object at limitadong operasyon ang nagpapaliwanag sa hangganang iyon.