د پول map هر وخت یو توکی کارکوونکي ته ورکوي. هغه توکی بشپړ کار جوړ کړئ، چې URL او ټاکل شوی پروکسي پکې شامل وي، ترڅو کارکوونکی خپله لار له بدلېدونکې نړیوالې لیستې څخه ونه اټکل کړي.

د محدودو urls لپاره، د تصدیق شوو پروکسي URLونو یوه نه تشه لیسته ورکړئ. عامه HTTP نوماندان په د 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)

urls، proxy_urls او handle_result د اپلیکیشن لخوا ورکول کیږي. همغږی کوونکی پای ټکي په تکراري ترتیب سره ټاکي؛ هر کارکوونکی یوه ثابته جوړه ترلاسه کوي. د پایلو تکراری کول د کارکوونکو استثناوې هم ښکاره کوي.

پنځه کارکوونکي فعال کارونه محدودوي، نه د هر پروکسي فعال کارونه. که لیسته دوه پای ټکي ولري، څو کارونه کولای شي په یو وخت کې ورته پای ټکی وکاروي. کله چې اړتیا وي د هر پای ټکي لپاره جلا ظرفیت قاعده اضافه کړئ. د هر پای ټکي URL لپاره د یو فعال کار لپاره، همغږې شوې کرښه کرایه کولای شي هر ننوتنه خوندي او بیرته راوګرځوي.

بیا هڅه باید دې ورته URL لپاره نوې محدوده هڅه جوړه کړي. له شریک لیست څخه ننوتنې لرې کوونکي تکراري بیا هڅې غږونه مه کوئ: بل کارکوونکی ممکن ترې ټاکنه کوي، او ختمه شوې لیسته لا هم روښانه پایله غواړي.

اړوندې مقالې