प्रॉक्सी चेकरमधील जागतिक 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 बदल वेगळा करत नाही.
तपासणीने दुसरे नेटवर्क धोरण मागे न सोडता तिचे निरीक्षण परत द्यावे. तिचा स्वतःचा क्लायंट ऑब्जेक्ट आणि मर्यादित ऑपरेशन ती सीमा स्पष्ट करतात.