ப்ராக்ஸி சரிபார்ப்பாளர்களில் உலகளாவிய urllib opener மாற்றங்களைத் தவிர்க்கவும்
urllib ப்ராக்ஸி சோதனைகளை முழு செயல்முறையின் வழிநடத்தல் மற்றும் நேர வரம்பு இயல்புநிலைகளை மாற்றுவதற்குப் பதிலாக அவற்றின் சொந்த opener-இலேயே வைத்திருங்கள்.
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.பாதை சோதனைக்கு உரியதாக இருக்கும்போது இந்த opener-இன் சொந்த open முறையை அழைக்கவும். எடுத்துக்காட்டின் HTTP இறுதிப்புள்ளி உங்கள் சேவையிலிருந்தோ பொது சோதனைகளுக்கான HTTP ப்ராக்ஸி பட்டியலிலிருந்தோ வரலாம். இந்தப் பகுதி உரிமையை விளக்குகிறது; இது முழு அங்கீகாரம் அல்லது ஆரோக்கியக் கொள்கையை வரையறுக்கவில்லை. கணக்கு சார்ந்த எந்த handler-ஐயும் அந்த நோக்கமான client-உடன் இணைத்தே வைத்திருங்கள்.
urllib.request.install_opener() பின்னர் module நிலை urlopen() அழைப்புகள் பயன்படுத்தும் செயல்முறை அளவிலான இயல்புநிலையை மாற்றுகிறது. எனவே ப்ராக்ஸிகளில் சுற்றும் சரிபார்ப்பான் தொடர்பில்லாத கோரிக்கைகளை அதன் கடைசி இறுதிப்புள்ளியில் விட்டுச் செல்லலாம். தற்காலிகமாக நிறுவி சுத்தம் செய்யும்போது மீட்டமைப்பது பகிரப்பட்ட மாற்றத்தின் போது ஒரே நேரக் கோரிக்கைகள் இயங்க அனுமதிக்கிறது.
socket.setdefaulttimeout() அதேபோல் பின்னர் உருவாக்கப்படும் socket-களுக்கான இயல்புநிலைகளை மாற்றுகிறது. சோதனை மட்டுமே அதைப் பெற வேண்டியிருக்கும்போது செயல்பாட்டு நிலை நேர வரம்பைப் பயன்படுத்தவும்.
சோதனையின் பதில்களை மூடி முடிவுகளை குறிப்பிட்டதாக வைத்திருங்கள்: HTTP பிழைப் பதில் தானாகவே இறந்த ப்ராக்ஸி கேட்பான் அல்ல. async சேவையில் synchronous urllib சோதனை பயன்படுத்தப்பட்டால், தடுக்கும் வேலையை பொருத்தமான worker-க்கு நகர்த்தவும்; அந்த இயக்க முடிவு உலகளாவிய opener மாற்றத்தை தனிமைப்படுத்தாது.
சோதனை வேறொரு வலையமைப்புக் கொள்கையை விட்டுவிடாமல் அதன் கவனிப்பைத் திருப்பித் தர வேண்டும். அதன் சொந்த client பொருளும் வரம்புக்குட்பட்ட செயல்பாடும் அந்த எல்லையைத் தெளிவாக்குகின்றன.