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.

Skyldar greinar