Bazen proxyjev lahko vsebuje končne točke z zelo različno zmogljivostjo. Dovolitev petdesetih operacij v aplikaciji ne prepreči, da bi jih devetinštirideset izbralo isti proxy.

Če je pravilo »največ štiri operacije v teku skozi vsak izbrani proxy«, to pravilo izrazite neposredno. Imjte semafor za vsako identiteto proxyja in ga pridobite okoli dela, ki porablja zmogljivost proxyja.

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

Ta skica predpostavlja, da je asyncio uvožen in da so URL-ji proxyjev preverjeni. Za javne zahteve na dovoljeni javni proxy poti seznam proxyjev HTTP zagotavlja kandidate za URL-je proxyjev v aiohttp. Resnična aplikacija bi morala nastaviti tudi lastno časovno omejitev zahteve in se odločiti, koliko podatkov odgovora potrebuje. Branje velike datoteke v celoti v pomnilnik je ločena odločitev o virih.

Obdržite dovoljenje za dragi del

Sprostitev semaforja takoj ob prihodu glav odgovora lahko uniči predvideno omejitev. Pretakajoče se telo lahko povezavo uporablja še dolgo zatem. Obdržite dovoljenje, dokler telo ni porabljeno ali odgovor ni zaprt v skladu s potekom dela aplikacije.

Gnezdeni upravitelji konteksta naredijo čiščenje vidno, ko izjema ali preklic zapusti operacijo. Izogibajte se ročnemu pridobivanju in sproščanju samo na dnu uspešne funkcije.

Omejitve povezav odgovarjajo na drugo vprašanje

Omejitve konektorja aiohttp omejujejo povezave po dokumentiranih pravilih konektorja. Ostajajo uporabne ob semaforju aplikacije. Omejitev povezav na cilj ne izraža zgolj s svojim imenom proračuna, ki si ga delijo vsi cilji, dodeljeni enemu proxyju.

Ločite tudi sočasnost od hitrosti zahtevkov. Štirje dolgotrajni zahtevki in štirje zelo kratki zahtevki uporabljajo isto kvoto sočasnosti, a ustvarjajo različne hitrosti zahtevkov na sekundo. Storitev s pravilom hitrosti lahko potrebuje uravnavanje tempa ali ločen omejevalnik hitrosti.

Izberite stabilen, nerazkrit identifikator proxyja za dnevnike in meritve. Če se dva URL-ja s poverilnicami nanašata na isti bazen zmogljivosti, odločite, ali naj si delita en proračun. Nasprotno pa lahko različna vrata ali računi predstavljajo ločene omejitve, ko jih operater tako dokumentira.

Ko se prepustnost zmanjša, preverite, kje delo čaka: vaš semafor, konektor, vzpostavljanje povezave s proxyjem ali branje odgovorov. Dvig vseh omejitev hkrati to razlikovanje oteži in lahko premakne čakalno vrsto v proxy, ki ga ne nadzorujete.

Sorodni članki