Gefðu hverri aiohttp-milliþjónustu sína eigin samtímisheimild
Takmarkaðu vinnu í gangi fyrir hverja valda milliþjónustu en haltu skilmálum aiohttp-tengingarsafnsins og hreinsun svara.
Tengingarsafn getur innihaldið endapunkta með mjög ólíka getu. Að leyfa fimmtíu aðgerðir í forritinu kemur ekki í veg fyrir að fjörutíu og níu þeirra velji sömu milliþjónustuna.
Ef stefnan er „að hámarki fjórar aðgerðir í gangi í gegnum hverja valda milliþjónustu“, tjáðu þá stefnu beint. Haltu samfleyti fyrir hverja auðkenni milliþjónustu og aflaðu þess í kringum vinnuna sem eyðir getu milliþjónustunnar.
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()Þessi skissa gerir ráð fyrir að asyncio hafi verið flutt inn og að slóðir milliþjónustunnar hafi verið staðfestar. Fyrir opinberar beiðnir á leyfilegri opinberri milliþjónustuleið útvegar HTTP-milliþjónustulistinn kandídaata fyrir slóðir aiohttp-milliþjónustunnar. Raunverulegt forrit ætti einnig að setja sinn eigin beiðnitímannörk og ákveða hversu miklum svarupplýsingum það þarf. Að lesa stóra skrá að fullu í minni er sérstök auðlindaákvörðun.
Haltu leyfinu fyrir dýra hlutann
Að sleppa samfleytinu um leið og svarhausar berast getur gert ráðgerða takmörkun að engu. Streymisbolur getur haldið áfram að nota tenginguna löngu síðar. Haltu leyfinu þar til búið er að eyða bolnum eða svarinu hefur verið lokað í samræmi við vinnuflæði forritsins.
Innfelldu samhengisstjórnarnir gera hreinsunina sýnilega þegar undantekning eða afturköllun yfirgefur aðgerðina. Forðastu að afla handvirkt og sleppa aðeins neðst í heppilegri aðgerð.
Tengingartakmarkanir svara annarri spurningu
Tengingartakmarkanir aiohttp-tengisins takmarka tengingar samkvæmt skjalfestum reglum tengisins. Þær haldast gagnlegar við hlið forritssamfleytis. Tengingartakmörkun á hvern áfangastað tjáir ekki, eingöngu af nafni sínu, fjárhagsáætlun sem allir áfangastaðir sem úthlutað er einni milliþjónustu deila.
Greindu einnig samtímis frá beiðnitíðni. Fjórar langlífar beiðnir og fjórar mjög stuttar beiðnir nota sama samtímiskvóta en framleiða ólíka beiðnir-á-sekúndu-tíðni. Þjónusta með tíðnistefnu gæti þurft tempó eða sérstakan tíðnitakmarkara.
Veldu stöðugt, ekki leyndarmáls auðkenni milliþjónustu fyrir atburðaskrár og mælikvarða. Ef tvær slóðir með skírteini vísa á sama getusafnið, ákveddu hvort þær eigi að deila einni fjárhagsáætlun. Hins vegar geta mismunandi gáttir eða reikningar táknað aðskildar takmarkanir þegar rekstraraðilinn skjalfestir þær þannig.
Þegar afköst minnka, skoðaðu hvar vinna bíður: í samfleytinu þínu, tenginu, uppsetningu tengingar við milliþjónustuna eða lestri svara. Að hækka allar takmarkanir í einu gerir þann greinarmun erfiðari og getur fært biðröðina yfir í milliþjónustu sem þú stjórnar ekki.