Defnyddio IP dirprwy gydag urllib3
Dewiswch ProxyManager ar gyfer dirprwy HTTP, archwiliwch feysydd ymateb urllib3 ac ystyriwch ailgeisiau a rheolwr ar wahân SOCKS.
Ar gyfer prawf dirprwy urllib3 bach, defnyddiwch ProxyManager gydag ailgeisiau wedi’u diffodd. Mae hyn yn adrodd yr ymgais gyntaf yn hytrach na threulio mwy o amser yn ailgeisio cofnod sydd wedi stopio gweithio. Mewn prosiect a reolir gan uv:
uv add urllib3Amnewidiwch y pwynt terfyn dogfennaeth gyda dirprwy HTTP o’ch gwasanaeth neu’r rhestr dirprwyon HTTP a rhedeg y cais drwy’r rheolwr hwnnw:
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()
Darllenwch response.status yn gyntaf, yna archwiliwch response.data. Dyma feysydd urllib3; nid yw status_code a text arddull Requests yn eu disodli. Gall gwrthodiad gwefan gyrraedd drwy ddirprwy sy’n gweithio. I’r gwrthwyneb, mae eithriad cyn ymateb yn dangos methiant i gwblhau’r cais.
Dewis diagnostig yw retries=False, nid polisi ailgeisio cynhyrchu. Mae’r terfyn cysylltu 5 eiliad a darllen 10 eiliad yn cyfyngu eu camau eu hunain; nid ydynt yn adio i derfyn cyfanswm gwarantedig o 15 eiliad. Gall DNS a chynnydd yr ymateb effeithio ar yr aros cyfan.
Mae’r enghraifft yn rhaglwytho’r corff ac yn clirio cronfeydd cysylltiadau’r rheolwr ar y diwedd. Ar gyfer ceisiadau ailadroddus drwy’r un pwynt, cadwch y rheolwr nes bod y gwaith drosodd i ailddefnyddio cysylltiadau. Mae newid i preload_content=False yn newid y cylch bywyd: rhaid i’r galwr ddarllen a rhyddhau’r ymateb sy’n llifo.
Dewiswch reolwr sy’n cyfateb i’r gwasanaeth gwrando. Nid yw PoolManager arferol yn dechrau defnyddio dirprwy am fod URL wedi’i gadw yn rhywle arall; mae SOCKS yn defnyddio urllib3.contrib.socks.SOCKSProxyManager a’i ddibyniaethau dewisol. Mae’r cod uchod yn dilyn llwybr HTTP ProxyManager.