Ang map ng isang pool ay nagpapasa ng isang item sa manggagawa nang paisa-isa. Gawing kumpletong trabaho ang item na iyon, kasama ang URL at napiling proxy, upang hindi hulaan ng manggagawa ang ruta nito mula sa nagbabagong pandaigdigang listahan.

Para sa may hangganang urls, magbigay ng hindi bakanteng listahan ng mga balidong proxy URL. Ang mga pampublikong kandidatong HTTP ay makikita sa listahan ng proxy HTTP:

from concurrent.futures import ThreadPoolExecutor
from itertools import cycle
import requests

def fetch(job):
    url, proxy_url = job
    proxies = {"http": proxy_url, "https": proxy_url}
    with requests.get(url, proxies=proxies, timeout=(5, 15)) as response:
        response.raise_for_status()
        return url, response.text

if not proxy_urls:
    raise ValueError("No proxy endpoints were supplied")

jobs = zip(urls, cycle(proxy_urls))
with ThreadPoolExecutor(max_workers=5) as executor:
    for url, body in executor.map(fetch, jobs):
        handle_result(url, body)

Ang urls, proxy_urls at handle_result ay ibinibigay ng aplikasyon. Ang tagapag-ugnay ay nagtatalaga ng mga endpoint sa paulit-ulit na pagkakasunod-sunod; ang bawat manggagawa ay tumatanggap ng isang nakapirming pares. Ang pag-ulit sa mga resulta ay naglalantad din ng mga eksepsiyon ng manggagawa.

Limang manggagawa ang naglilimita sa mga aktibong trabaho, hindi sa mga aktibong trabaho bawat proxy. Kung may dalawang endpoint ang listahan, maraming trabaho ang maaaring gumamit ng parehong endpoint nang sabay. Magdagdag ng hiwalay na tuntunin sa kapasidad bawat endpoint kapag kinakailangan. Para sa isang aktibong trabaho bawat URL ng endpoint, ang isang sinkronisadong pag-upa ng pila ay maaaring magreserba at magbalik ng bawat entry.

Ang muling pagtatangka ay dapat lumikha ng bagong limitadong pagtatangka para sa parehong URL. Iwasan ang mga rekursibong tawag sa muling pagtatangka na nag-aalis ng mga entry mula sa pinagsasaluhang listahan: maaaring may ibang manggagawang pumipili mula rito, at ang naubos na listahan ay nangangailangan pa rin ng malinaw na resulta.

Kaugnay na mga artikulo