Proksibassein võib sisaldada väga erineva võimekusega otspunkte. Viiekümne toimingu lubamine rakenduses ei takista neljakümne üheksal neist sama proksi valimast.

Kui poliitika on „kõige rohkem neli pooleliolevat toimingut iga valitud proksi kaudu“, väljenda seda poliitikat otse. Hoia iga proksi identiteedi jaoks semaforit ja omanda see töö ümber, mis proksi võimekust tarbib.

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()

See visand eeldab, et asyncio on imporditud ja proksi URL-id on valideeritud. Avalike taotluste jaoks lubatud avalikul proksi-teel pakub HTTP-prokside loend kandidaate aiohttp proksi URL-ide jaoks. Päris rakendus peaks ka ise seadistama taotluse ajapiirangu ja otsustama, kui palju vastuseandmeid tal vaja on. Suure faili täielikult mällu lugemine on eraldi ressursiotsus.

Hoia luba kalli osa jaoks

Semafori vabastamine kohe, kui vastuse päised saabuvad, võib kavandatud piirangu nurjata. Voogesitatav keha võib ühendust veel kaua kasutada. Hoia luba, kuni keha on tarbitud või vastus on rakenduse töövoo kohaselt suletud.

Pesastatud kontekstihaldurid teevad puhastamise nähtavaks, kui erand või tühistamine toimingust lahkub. Väldi käsitsi omandamist ja vabastamist ainult edukaks osutunud funktsiooni lõpus.

Ühenduspiirangud vastavad teisele küsimusele

aiohttp konnektori piirangud piiravad ühendusi konnektori dokumenteeritud reeglite järgi. Need jäävad kasulikuks rakenduse semafori kõrval. Sihtkohapõhine ühenduspiirang ei väljenda üksnes oma nime järgi eelarvet, mida jagavad kõik ühele proksile määratud sihtkohad.

Erista ka lõimelisust taotluskiirusest. Neli pikaajalist taotlust ja neli väga lühikest taotlust kasutavad sama lõimelisuse luba, kuid tekitavad erinevaid taotlusi sekundis. Kiiruspoliitikaga teenus võib vajada tempostamist või eraldi kiirusepiirajat.

Vali logide ja mõõdikute jaoks püsiv, mitte-salajane proksi identifikaator. Kui kaks volitusi kandvat URL-i viitavad samale võimekusbasseinile, otsusta, kas need peaksid ühte eelarvet jagama. Vastupidi, erinevad pordid või kontod võivad tähistada eraldi piiranguid, kui operaator seda nii dokumenteerib.

Kui läbilaskevõime langeb, uuri, kus töö ootab: sinu semafor, konnektor, proksiühenduse loomine või vastuste lugemine. Kõigi piirangute korraga tõstmine muudab selle eristamise raskemaks ja võib järjekorra nihutada proksile, mida sa ei kontrolli.

Seotud artiklid