ചെറിയ 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 പാതയാണ് സ്വീകരിക്കുന്നത്.

അനുബന്ധ ലേഖനങ്ങൾ