Tugann map linn mír amháin don oibrí ag an am. Déan tasc iomlán den mhír sin, lena n-áirítear an URL agus an seachfhreastalaí roghnaithe, ionas nach dtuairimíonn an t-oibrí a bhealach ó liosta domhanda atá ag athrú.

I gcás urls teoranta, soláthair liosta neamhfolamh d'URLanna seachfhreastalaí bailíochtaithe. Tá iarrthóirí HTTP poiblí ar fáil sa liosta seachfhreastalaí 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)

Soláthraíonn an feidhmchlár urls, proxy_urls agus handle_result. Sannann an comhordaitheoir críochphointí in ord athráiteach; faigheann gach oibrí péire seasta amháin. Nochtann atriall na dtorthaí eisceachtaí oibrithe freisin.

Cuireann cúig oibrí teorainn le tascanna gníomhacha, ní le tascanna gníomhacha in aghaidh an seachfhreastalaí. Má tá dhá chríochphointe sa liosta, is féidir le roinnt tascanna an críochphointe céanna a úsáid ag an am céanna. Cuir riail acmhainne ar leith in aghaidh an chríochphointe leis nuair is gá. Le haghaidh tasc gníomhach amháin in aghaidh URL críochphointe, is féidir le léas ciú sioncronaithe gach iontráil a chur in áirithe agus a thabhairt ar ais.

Ba cheart go gcruthódh athiarracht iarracht theoranta nua don URL céanna. Seachain glaonna athiarrachta athchúrsacha a bhaineann iontrálacha ó liosta comhroinnte: b'fhéidir go bhfuil oibrí eile ag roghnú as, agus tá toradh sainráite ag teastáil fós ó liosta ídithe.

Ailt ghaolmhara