નાના 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 માર્ગ અનુસરે છે.

સંબંધિત લેખો