Savna hvønn úrslit úr samtíðis urllib3 proxy-umbonum
Deil ein uppsettan ProxyManager millum arbeiðstræðir, brúka úrslitaiteratorin hjá útinnarinum og skil hylkis varðveitslu frá einari sambandsmark.
At gera eitt arbeiðarahylki gevur ikki kallaranum tær niðurheintaðu síðurnar. Varðveit og brúka tær virðini, sum tað senda arbeiðið letur aftur:
from concurrent.futures import ThreadPoolExecutor
import urllib3
manager = urllib3.ProxyManager(
'http://proxy.example:8080',
maxsize=4,
block=True,
)
def fetch(url):
response = manager.request(
'GET', url, timeout=urllib3.Timeout(connect=5, read=15),
)
return url, response.status, response.data
try:
with ThreadPoolExecutor(max_workers=4) as workers:
results = list(workers.map(fetch, urls))
finally:
manager.clear()Hesi brotini vóna eina markaða URL-lista og vanligar svarstøddir. Fyri loyvdar almennar URL-kanningar uttan proxy-samruna kann ein valmøguleiki úr HTTP-proxy-listanum skifta út dømis-HTTP-endapunktinum hjá stjóranum. Hvønn úrslit hevur sín URL við, so kallarin kann seta støðu og kropp í samband við rætta umbøn. map letur úrslit aftur í inntaksrøð; ein undantøka í einum arbeiðara verður reist, tá ið tað úrslitið verður heintað.
Uppsetti ProxyManager eigur sambandshylkið fyri umbønirnar. Við tann sjálvvalda fyri-innlasta svarhamin, sum verður brúktur her, lesur urllib3 kroppin og letur sambandið aftur í hylki sítt. Ein streymisútgáva hevði tørvað greiða brúk og frígeving av sambandinum.
maxsize stýrir vanliga varðveittum endurnýtiligum sambandum, ikki einum harðum marki á hvørjum opnum socket. block=True broytir viðkomandi hylkisatferð, so kallarar bíða eftir einum fríum sambandi heldur enn at opna fleiri umframt markið hjá tí hylkinum.
Talið av arbeiðarum markar samtíðis køll í hesum døminum. Við nógvum ferðamálum hava hylkisuppsetning og leiðin, sum verður brúkt til HTTPS-tunnlar, eisini týdning; ein uppsetning fyri eitt hylki skal ikki lýsast sum ein altjóða socket-kvota fyri hvønn vert.