צוטיילן א URL און א פראקסי צו יעדער Python ThreadPoolExecutor ארבעט
צוטיילט א פראקסי איידער איר שיקט א Python בקשה־ארבעט, אנשטאט לאזן ארבעטער זיך פארמעסטן איבער א געמיינזאמער פֿאַרענדערלעכער אויסוואל־צושטאנד.
דער 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. פֿאַרמיידט רעקורסיווע ווידערהאל־רופּעס וואס נעמען ארויס איינשרײַבונגען פון א געמיינזאמער רשימה: אן אנדער ארבעטער קען פון דארט אויסוועלן, און א פולע רשימה דאַרף נאך אַן אויסשליסלעכן רעזולטאט.