Jepini çdo proxy aiohttp buxhetin e vet të njëkohshmërisë
Kufizoni punën në vazhdim për çdo proxy të zgjedhur duke ruajtur kufijtë e pishinës së lidhjeve të aiohttp dhe pastrimin e përgjigjeve.
Një pishinë proxy mund të përmbajë pika fundore me kapacitete shumë të ndryshme. Lejimi i pesëdhjetë operacioneve në aplikacion nuk i pengon dyzet e nëntë prej tyre të zgjedhin të njëjtin proxy.
Nëse politika është «maksimumi katër operacione në vazhdim përmes çdo proxy të zgjedhur», shpreheni atë politikë drejtpërdrejt. Mbani një semafor për çdo identitet proxy dhe merrni atë rreth punës që konsumon kapacitetin e proxy-it.
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()Ky skicë supozon se asyncio është importuar dhe URL-të e proxy-ve janë validuar. Për kërkesat publike në një rrugë publike proxy të lejuar, lista e proxy-ve HTTP furnizon kandidatë për URL-të e proxy-ve të aiohttp. Një aplikacion i vërtetë duhet gjithashtu të vendosë afatin e vet të kërkesës dhe të vendosë sa të dhëna përgjigjeje i nevojiten. Leximi i një skedari të madh plotësisht në memorie është një vendim i veçantë burimesh.
Mbani lejen për pjesën e shtrenjtë
Lëshimi i semaforit sapo mbërrijnë titujt e përgjigjes mund të prishë kufirin e synuar. Një trup transmetimi mund të vazhdojë të përdorë lidhjen shumë kohë më pas. Mbani lejen derisa trupi të konsumohet ose përgjigja të mbyllet sipas rrjedhës së punës së aplikacionit.
Menaxherët e kontekstit të ndërlidhur e bëjnë pastrimin të dukshëm kur një përjashtim ose anulim largohet nga operacioni. Shmangni marrjen manuale dhe lëshimin vetëm në fund të një funksioni të suksesshëm.
Kufijtë e lidhjeve përgjigjen një pyetje tjetër
Kufijtë e lidhësit të aiohttp kufizojnë lidhjet sipas rregullave të dokumentuara të lidhësit. Ata mbeten të dobishëm pranë një semafori aplikacioni. Një kufi lidhjesh për destinacion nuk shpreh, vetëm me emrin e tij, një buxhet të ndarë nga të gjitha destinacionet e caktuara një proxy.
Dalloni gjithashtu njëkohshmërinë nga shkalla e kërkesave. Katër kërkesa jetëgjata dhe katër kërkesa shumë të shkurtra përdorin të njëjtën kuotë njëkohshmërie ndërsa prodhojnë shkallë të ndryshme kërkesash për sekondë. Një shërbim me politikë shkalle mund të kërkojë ritmim ose një kufizues shkalle të veçantë.
Zgjidhni një identifikues proxy të qëndrueshëm dhe jo të fshehtë për regjistrat dhe metrikat. Nëse dy URL me kredenciale i referohen të njëjtës pishinë kapaciteti, vendosni nëse duhet të ndajnë një buxhet. Anasjelltas, porta ose llogari të ndryshme mund të përfaqësojnë kufij të veçantë kur operatori i dokumenton kështu.
Kur xhiroja bie, shqyrtoni ku pret puna: semafori juaj, lidhësi, vendosja e lidhjes me proxy-n ose leximi i përgjigjeve. Ngritja e të gjithë kufijve njëherësh e vështirëson atë dallim dhe mund ta zhvendosë radhën në një proxy që nuk e kontrolloni.