بىر كۆلچەكنىڭ map ئىشچىغا بىر قېتىمدا بىر تۈرنى يەتكۈزىدۇ. شۇ تۈرنى URL ۋە تاللانغان proxyni ئۆز ئىچىگە ئالغان تولۇق ۋەزىپە قىلىڭ، ئىشچى ئۆز يولىنى ئۆزگىرىدىغان دۇنياۋى تىزىملىكتىن پەرەز قىلمايدۇ.

چەكلىك urls ئۈچۈن، دەلىللەنگەن proxy URL لىرىنىڭ قۇرۇق بولمىغان تىزىملىكىنى تەمىنلەڭ. ئاممىۋى HTTP نامزاتلىرى HTTP proxy تىزىملىكى دا بار:

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 ئەپلىكەيشەن تەرىپىدىن تەمىنلىنىدۇ. ماسلاشتۇرغۇچى ئاخىرقى نۇقتىلارنى تەكرارلىنىدىغان تەرتىپتە تەيىنلەيدۇ؛ ھەر بىر ئىشچى بىر مۇقىم جۈپ ئالىدۇ. نەتىجىلەرنى تەكرارلاش ئىشچىلارنىڭ ئىستىسنالىرىنىمۇ ئاشكارىلايدۇ.

بەش ئىشچى ئاكتىپ ۋەزىپىلەرنى چەكلەيدۇ، ھەر بىر proxy غا ئاكتىپ ۋەزىپىلەرنى ئەمەس. ئەگەر تىزىملىكتە ئىككى ئاخىرقى نۇقتا بولسا، بىر قانچە ۋەزىپە ئوخشاش نۇقتىنى بىر ۋاقىتتا ئىشلىتەلەيدۇ. زۆرۈر بولغاندا ھەر بىر ئاخىرقى نۇقتا ئۈچۈن ئايرىم سىغىم قائىدىسى قوشۇڭ. ھەر بىر ئاخىرقى نۇقتا URL غا بىر ئاكتىپ ۋەزىپە ئۈچۈن، ماسلاشتۇرۇلغان ئۆچرەت ئىجارىسى ھەر بىر تۈرنى زاكاز قىلىپ قايتۇرالايدۇ.

قايتا سىناش ئوخشاش URL ئۈچۈن يېڭى چەكلىك سىناش قۇرۇشى كېرەك. ئورتاق تىزىملىكتىن تۈرلەرنى چىقىرىۋېتىدىغان تەكرارلىنىدىغان قايتا سىناش چاقىرىقلىرىدىن ساقلىنىڭ: باشقا بىر ئىشچى شۇنىڭدىن تاللاۋاتقان بولۇشى مۇمكىن، تۈگەنگەن تىزىملىكمۇ يەنىلا ئېنىق نەتىجە تەلەپ قىلىدۇ.

مۇناسىۋەتلىك ماقالىلەر