Eit proxybasseng kan innehalde endepunkt med svært ulik kapasitet. Å tillate femti operasjonar i applikasjonen hindrar ikkje førtini av dei i å velje same proxy.

Viss policyen er «høgst fire pågåande operasjonar gjennom kvar vald proxy», uttrykk den policyen direkte. Hald ein semafor for kvar proxyidentitet, og skaff han rundt arbeidet som brukar kapasiteten til proxyen.

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

Denne skissa føreset at asyncio er importert og at proxy-URL-ane er validerte. For offentlege førespurnader på ein tillaten offentleg proxy-rute leverer HTTP-proxylista kandidatar for proxy-URL-ane til aiohttp. Ein ekte applikasjon bør òg setje si eiga førespurnadstidsgrense og avgjere kor mykje svardata han treng. Å lese ei stor fil heilt inn i minnet er eit eige ressurssavgjerdsle.

Hald løyvet for den dyre delen

Å sleppe semaforen så snart svarhovuda kjem kan øydeleggje den tiltenkte grensa. Ein strøymande kropp kan halde fram med å bruke tilkoplinga lenge etterpå. Hald løyvet til kroppen er brukt opp eller svaret er stengt i samsvar med arbeidsflyten til applikasjonen.

Dei nøsta konteksthandsamarane gjer oppryddinga synleg når eit unntak eller ei avbryting forlèt operasjonen. Unngå å skaffe manuelt og sleppe berre nedst i ein vellukka funksjon.

Tilkoplingsgrenser svarar på eit anna spørsmål

Tilkoplingsgrensene til aiohttp avgrensar tilkoplingar etter dei dokumenterte reglane til tilkoplaren. Dei er framleis nyttige ved sida av ein applikasjonssemafor. Ei tilkoplingsgrense per mål uttrykkjer ikkje, berre ved namnet, eit budsjett som vert delt av alle måla som er tildelte éin proxy.

Skil òg samtidigheit frå førespurnadsrate. Fire langliva førespurnader og fire svært korte førespurnader brukar same samtidigheitskvote medan dei producerer ulike førespurnader-per-sekund-rater. Ei teneste med ein ratepolicy kan trenge pacing eller ein eigen rateavgrensar.

Vel ein stabil, ikkje-hemmeleg proxyidentifikator for loggar og målingar. Viss to URL-ar med legitimasjon viser til same kapasitetsbasseng, avgjer om dei skal dele eitt budsjett. Omvendt kan ulike portar eller kontoar representere separate grenser når operatøren dokumenterer dei slik.

Når gjennomstrøyminga fell, undersøk kvar arbeidet ventar: semaforen din, tilkoplaren, oppsettet av proxy-tilkoplinga eller lesing av svar. Å heve alle grensene samstundes gjer den skilnaden vanskelegare og kan flytte køen inn i ein proxy du ikkje kontrollerer.

Relaterte artiklar