Պրոքսիների լողավազանը կարող է պարունակել շատ տարբեր հզորությամբ վերջնակետեր: Հավելվածում հիսուն գործողություն թույլատրելը չի խանգարում, որ դրանցից քառասունինը ընտրեն նույն պրոքսին:

Եթե քաղաքականությունը «առավելագույնը չորս ընթացիկ գործողություն յուրաքանչյուր ընտրված պրոքսիի միջով» է, արտահայտեք այդ քաղաքականությունն ուղղակիորեն: Պահեք սեմաֆոր յուրաքանչյուր պրոքսիի ինքնության համար և ձեռք բերեք այն այն աշխատանքի շուրջ, որը սպառում է պրոքսիի հզորությունը:

limits = {proxy: asyncio.Semaphore(4) for proxy in proxy_urls}

async def fetch(session, proxy, url):
    async with limits[proxy]:
        async with session.get(url, proxy=proxy) as response:
            return await response.read()

Այս ուրվագիծը ենթադրում է, որ asyncio ներմուծված է, և պրոքսիի URL-ները վավերացված են: Թույլատրված հանրային պրոքսի երթուղու հանրային հարցումների համար HTTP պրոքսիների ցանկը տրամադրում է թեկնածուներ aiohttp-ի պրոքսի URL-ների համար: Իրական հավելվածը պետք է նաև սահմանի իր հարցման ժամկետը և որոշի, թե որքան պատասխանի տվյալ է անհրաժեշտ: Մեծ ֆայլն ամբողջությամբ հիշողության մեջ կարդալը առանձին ռեսուրսային որոշում է:

Պահեք թույլտվությունը թանկ մասի համար

Սեմաֆորի ազատումը հենց պատասխանի վերնագրերի գալուն պես կարող է խափանել նախատեսված սահմանը: Հոսքային մարմինը կարող է շարունակել օգտագործել միացումը դրանից շատ ավելի ուշ: Պահեք թույլտվությունը, մինչև մարմինը սպառվի կամ պատասխանը փակվի հավելվածի աշխատահոսքի համաձայն:

Ներդրված կոնտեքստի կառավարիչները մաքրումը տեսանելի են դարձնում, երբ բացառությունը կամ չեղարկումը թողնում է գործողությունը: Խուսափեք ձեռքով ձեռքբերումից և ազատումից միայն հաջող ֆունկցիայի ներքևում:

Միացումների սահմանները պատասխանում են այլ հարցի

aiohttp-ի միացնողի սահմանները սահմանափակում են միացումները միացնողի փաստաթղթավորված կանոններով: Դրանք օգտակար են մնում հավելվածի սեմաֆորի կողքին: Յուրաքանչյուր նպակայանի միացման սահմանը միայն իր անունով չի արտահայտում մեկ պրոքսիին հատկացված բոլոր նպատակակետերի կողմից կիսվող բյուջեն:

Տարբերեք նաև զուգահեռականությունը հարցումների արագությունից: Չորս երկարաժամկետ հարցում և չորս շատ կարճ հարցում օգտագործում են նույն զուգահեռականության չափաբաժինը՝ միաժամանակ ստեղծելով տարբեր հարցումներ-վայրկյանում արագություններ: Արագության քաղաքականությամբ ծառայությունը կարող է պահանջել ռիթմավորում կամ առանձին արագության սահմանափակիչ:

Ընտրեք կայուն, ոչ գաղտնի պրոքսիի նույնացուցիչ մատյանների և չափումների համար: Եթե երկու հավատարմագրեր կրող URL վերաբերում են նույն հզորության լողավազանին, որոշեք՝ արդյոք նրանք պետք է կիսեն մեկ բյուջե: Հակառակը, տարբեր նավահանգիստներ կամ հաշիվներ կարող են ներկայացնել առանձին սահմաններ, երբ օպերատորը այդպես է փաստաթղթավորում դրանք:

Երբ թողունակությունը նվազում է, ստուգեք, թե որտեղ է սպասում աշխատանքը՝ ձեր սեմաֆորը, միացնողը, պրոքսիի միացման կարգավորումը կամ պատասխանների ընթերցումը: Բոլոր սահմանները միաժամանակ բարձրացնելը դժվարացնում է այդ տարբերակումը և կարող է հերթը տեղափոխել ձեր չվերահսկվող պրոքսի:

Առնչվող հոդվածներ