പ്രോക്സി ചെക്കറുകളിൽ ആഗോള 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 ഉദ്ദേശിച്ച ക്ലയന്റിൽ ഘടിപ്പിച്ച് നിർത്തുക.
urllib.request.install_opener() പിന്നീടുള്ള മൊഡ്യൂൾ-തല urlopen() വിളികൾ ഉപയോഗിക്കുന്ന പ്രോസസ്സ്-വ്യാപക ഡിഫോൾട്ട് മാറ്റുന്നു. അതിനാൽ പ്രോക്സികളിലൂടെ കറങ്ങുന്ന ചെക്കർ ബന്ധമില്ലാത്ത അഭ്യർത്ഥനകളെ അതിന്റെ അവസാന എൻഡ്പോയിന്റിൽ വിട്ടേക്കാം. താൽക്കാലികമായി ഇൻസ്റ്റാൾ ചെയ്ത് വൃത്തിയാക്കുമ്പോൾ പുനഃസ്ഥാപിക്കുന്നത് പങ്കിട്ട മാറ്റത്തിനിടയിൽ സമകാലിക അഭ്യർത്ഥനകൾ പ്രവർത്തിക്കാൻ ഇപ്പോഴും അനുവദിക്കുന്നു.
socket.setdefaulttimeout() അതുപോലെ പിന്നീട് സൃഷ്ടിക്കുന്ന socket-കൾക്കുള്ള ഡിഫോൾട്ടുകൾ മാറ്റുന്നു. പരിശോധന മാത്രം അത് സ്വീകരിക്കേണ്ടിവരുമ്പോൾ പ്രവർത്തന-തല ടൈംഔട്ട് ഉപയോഗിക്കുക.
പരിശോധനയുടെ പ്രതികരണങ്ങൾ അടയ്ക്കുകയും ഫലങ്ങൾ നിർദ്ദിഷ്ടമായി നിർത്തുകയും ചെയ്യുക: HTTP പിശക് പ്രതികരണം സ്വയമേവ ഒരു മരിച്ച പ്രോക്സി ശ്രോതാവല്ല. async സേവനത്തിൽ synchronous urllib പരിശോധന ഉപയോഗിക്കുന്നുവെങ്കിൽ, തടയുന്ന ജോലി ഉചിതമായ worker-ലേക്ക് മാറ്റുക; ആ പ്രവർത്തന തീരുമാനം ആഗോള opener മാറ്റത്തെ വേർതിരിക്കുന്നില്ല.
പരിശോധന മറ്റൊരു നെറ്റ്വർക്ക് നയം പിന്നിൽ വിടാതെ അതിന്റെ നിരീക്ഷണം തിരികെ നൽകണം. അതിന്റെ സ്വന്തം ക്ലയന്റ് ഒബ്ജക്റ്റും പരിമിത പ്രവർത്തനവും ആ അതിർത്തി വ്യക്തമാക്കുന്നു.