Пул проксі можа змяшчаць канчатковыя пункты з вельмі рознай прапускной здольнасцю. Дазвол пяцідзесяці аперацый ва ўсім праграмным забеспячэнні не перашкаджае сорак дзевяці з іх выбраць той жа проксі.

Калі палітыка — «не больш за чатыры аперацыі ў працэсе праз кожны выбраны проксі», выразіце гэтую палітыку непасрэдна. Трымайце семафор для кожнай ідэнтычнасці проксі і набывайце яго вакол працы, якая спажывае прапускную здольнасць проксі.

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

Гэты накід мяркуе, што asyncio ужо імпартаваны, а URL-адрасы проксі правераны. Для публічных запытаў на дазволеным публічным маршруце проксі спіс HTTP-проксі пастаўляе кандыдатаў для URL-адрасоў проксі aiohttp. Сапраўднае праграмнае забеспячэнне павінна таксама ўсталяваць уласны тайм-аўт запыту і вырашыць, колькі даных адказу яму патрэбна. Чытанне вялікага файла цалкам у памяць — асобнае рашэнне аб рэсурсах.

Трымайце дазвол для дарагой часткі

Вызваленне семафора, як толькі прыходзяць загалоўкі адказу, можа звесці нанівец мэтавы ліміт. Паток цела можа працягваць выкарыстоўваць злучэнне яшчэ доўга. Трымайце дазвол, пакуль цела не спажыта або адказ не закрыты ў адпаведнасці з працоўным працэсам праграмы.

Укладзеныя кантэкстныя менеджары робяць ачыстку бачнай, калі выключэнне або адмена пакідае аперацыю. Пазбягайце ручнога набыцця і вызвалення толькі ўнізе паспяховай функцыі.

Ліміты злучэнняў адказваюць на іншае пытанне

Ліміты канэктара aiohttp абмяжоўваюць злучэнні па дакументаваных правілах канэктара. Яны застаюцца карыснымі побач з семафорам праграмы. Ліміт злучэнняў на кожны пункт прызначэння не выражае, толькі па сваёй назве, бюджэт, агульны для ўсіх пунктаў прызначэння, прызначаных аднаму проксі.

Адрознівайце таксама паралельнасць і частату запытаў. Чатыры доўгажывучыя запыты і чатыры вельмі кароткія запыты выкарыстоўваюць адзін і той жа дазвол паралельнасці, але даюць розныя частоты запытаў у секунду. Сэрвіс з палітыкай частаты можа патрабаваць размеркавання тэмпу або асобнага абмежавальніка частаты.

Выбірайце стабільны, не сакрэтны ідэнтыфікатар проксі для журналаў і метрык. Калі два URL-адрасы з уліковымі данымі спасылаюцца на адзін пул здольнасцей, вырашыце, ці павінны яны дзяліць адзін бюджэт. Наадварот, розныя парты або ўліковыя запісы могуць прадстаўляць асобныя ліміты, калі аператар так іх дакументуе.

Калі прапускная здольнасць падае, праверце, дзе чакае праца: ваш семафор, канэктар, наладжванне злучэння з проксі або чытанне адказаў. Адначасовае павышэнне ўсіх лімітаў робіць гэтае размежаванне складанейшым і можа перамясціць чаргу ў проксі, які вы не кантралюеце.

Падобныя артыкулы