Forðastu alhliða urllib-opener-breytingar í proxy-prófara
Haltu urllib proxy-prófunum hjá eigin opener þeirra í stað þess að skipta út ferlisvíðum sjálfgefnum leiðum og tímanörkum.
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.Kallaðu eigin open-aðferð þessa opener þegar leið tilheyrir prófuninni. HTTP-endapunktur dæmisins getur komið frá þjónustunni þinni eða frá HTTP-proxylistanum fyrir opinberar prófanir. Brotið sýnir eignarhald; það skilgreinir ekki fullu auðkenningar- eða heilsustefnuna. Haltu hvaða reikningssérstökum handlers sem er tengdum við fyrirhugaða biðlarann.
urllib.request.install_opener() breytir ferlisvíða sjálfgefnu sem síðari urlopen()-köll á einingastigi nota. Prófari sem fer í gegnum proxies getur því látið ótengdar beiðnir nota síðasta endapunktinn sinn. Tímabundin uppsetning og endurheimt við hreinsun leyfir samt samtímis beiðnum að keyra meðan á sameiginlegu breytingunni stendur.
socket.setdefaulttimeout() breytir á sama hátt sjálfgefnum gildum fyrir sockets sem búin eru til síðar. Notaðu tímanörk á aðgerðarstigi þegar aðeins prófunin á að fá það.
Lokaðu prófunarsvörum og haltu niðurstöðunum nákvæmum: HTTP-villusvar er ekki sjálfkrafa dauður proxy-hlustun. Ef samstillt urllib-prófun er notuð í ósamstilltri þjónustu, færðu blokkerandi vinnu til viðeigandi starfsmanns; sú framkvæmdarákvörðun gerir alhliða opener-breytinguna ekki einangraða.
Prófun ætti að skila athugun sinni án þess að skilja aðra netstefnu eftir. Eigið biðlara-hlutur hennar og takmörkuð aðgerð gera þessi mörk skýr.