urllib3 सह प्रॉक्सी IP वापरा
HTTP प्रॉक्सीसाठी ProxyManager निवडा, urllib3 प्रतिसादाचे फील्ड तपासा आणि पुनर्प्रयत्न व SOCKSचा स्वतंत्र व्यवस्थापक लक्षात घ्या.
छोट्या urllib3 प्रॉक्सी निदानासाठी पुनर्प्रयत्न बंद करून ProxyManager वापरा. यामुळे बंद पडलेली नोंद पुन्हापुन्हा वापरून वेळ घालवण्याऐवजी पहिला प्रयत्न नोंदवला जातो. uvने व्यवस्थापित केलेल्या प्रकल्पात:
uv add urllib3दस्तऐवजातील एंडपॉइंट आपल्या सेवेतील किंवा HTTP प्रॉक्सी यादीतील HTTP प्रॉक्सीने बदला आणि त्या व्यवस्थापकातून विनंती करा:
import urllib3
proxy = urllib3.ProxyManager(
"http://203.0.113.10:8080",
timeout=urllib3.Timeout(connect=5, read=10),
retries=False,
)
try:
response = proxy.request("GET", "https://example.com/")
print(response.status)
print(response.data.decode("utf-8", errors="replace")[:200])
finally:
proxy.clear()
आधी response.status वाचा, मग response.data तपासा. हे urllib3चे फील्ड आहेत; Requestsचे status_code आणि text त्यांचे पर्याय नाहीत. वेबसाइटचा नकार चालणाऱ्या प्रॉक्सीतून येऊ शकतो. प्रतिसादाआधीचा अपवाद मात्र विनंती पूर्ण न झाल्याचे सांगतो.
retries=False ही निदानाची निवड आहे, उत्पादनातील पुनर्प्रयत्न धोरण नाही. जोडणीचे 5 सेकंद आणि वाचनाचे 10 सेकंद स्वतःचे टप्पे मर्यादित करतात; मिळून खात्रीशीर एकूण 15 सेकंदांची अंतिम मुदत होत नाही. DNS आणि प्रतिसादाची प्रगती एकूण प्रतीक्षा बदलू शकते.
उदाहरण बॉडी आधी लोड करते आणि शेवटी व्यवस्थापकाचे पूल साफ करते. त्याच एंडपॉइंटमधून वारंवार विनंत्यांसाठी काम संपेपर्यंत व्यवस्थापक ठेवा, म्हणजे जोडण्या पुन्हा वापरता येतील. preload_content=Falseवर गेल्यास जीवनचक्र बदलते: कॉल करणाऱ्याने प्रवाही प्रतिसाद वाचून मुक्त केला पाहिजे.
ऐकणाऱ्या सेवेप्रमाणे व्यवस्थापक निवडा. दुसरीकडे URL साठवल्याने सामान्य PoolManager प्रॉक्सी-जाणकार होत नाही; SOCKS urllib3.contrib.socks.SOCKSProxyManager आणि त्याची ऐच्छिक अवलंबने वापरते. वरील कोड HTTP ProxyManager मार्ग वापरतो.