Прокси санд маш ялгаатай чадалтай төгсгөлийн цэгүүд байж болно. Програмд тавин үйлдэл зөвшөөрөх нь тэдгээрийн дөчин ес нь ижил прокси сонгохоос сэргийлэхгүй.

Хэрэв бодлого нь «сонгосон прокси бүрээр хамгийн ихдээ дөрвөн гүйцэтгэж буй үйлдэл» бол тэр бодлогыг шууд илэрхийл. Прокси бүрийн таних тэмдэгт семафор байлгаж, проксийн чадлыг зарцуулж буй ажлын эргэн тойронд түүнийг олж ав.

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 прокси жагсаалт aiohttp-ийн прокси URL-д нэр дэвшигчдийг нийлүүлнэ. Бодит програм өөрийн хүсэлтийн хугацааны хязгаарыг тогтоож, хэдэн хариултын өгөгдөл хэрэгтэйг шийдэх ёстой. Том файлыг бүхэлд нь санах ойд унших нь тусдаа нөөцийн шийдвэр юм.

Үнэтэй хэсэгт зөвшөөрлийг хадгал

Хариултын толгойнууд ирэнгүүт семафорыг чөлөөлөх нь зорьсон хязгаарыг унагаж болно. Урсгал бие нь дараа нь ч удаан хугацаанд холболтыг ашиглаж болно. Биеийг зарцуулах эсвэл програмын ажлын урсгалын дагуу хариултыг хаах хүртэл зөвшөөрлийг хадгал.

Оруулсан контекст менежерүүд үл хамаарах зүйл эсвэл цуцлалт үйлдлээс гарах үед цэвэрлэгээг харагдахуйц болгоно. Гараар олж аваад зөвхөн амжилттай функцийн доор чөлөөлөхөөс зайлсхий.

Холболтын хязгаарууд өөр асуултад хариулна

aiohttp холбогчийн хязгаарууд холболтыг холбогчийн баримтжуулсан дүрмийн дагуу хязгаарлана. Тэд програмын семафорын хажууд ашигтай хэвээр байна. Чиглэл тус бүрийн холболтын хязгаар нь зөвхөн нэрээрээ нэг проксид хуваарилагдсан бүх чиглэлийн хуваалцсан төсвийг илэрхийлэхгүй.

Зэрэгцээ байдлыг хүсэлтийн хурдаас ялга. Дөрвөн урт настай хүсэлт ба дөрвөн маш богино хүсэлт ижил зэрэгцээ квотыг ашиглах боловч секундэд ногдох хүсэлтийн хурд өөр өөр байна. Хурдны бодлоготой үйлчилгээнд хэмнэл тохируулах эсвэл тусдаа хурдны хязгаарлагч шаардлагатай байж болно.

Лог ба хэмжүүрт тогтвортой, нууц бус прокси танигчийг сонго. Хэрэв итгэмжлэл бүхий хоёр URL ижил чадлын санд хамаарах бол тэд нэг төсөв хуваалцах ёстой эсэхийг шийд. Эсрэгээр, өөр порт эсвэл бүртгэл нь оператор тэдгээрийг тийн баримтжуулсан тохиолдолд тусдаа хязгаарыг төлөөлж болно.

Дамжуулах чадвар буурахад ажил хаана хүлээж байгааг шалга: таны семафор, холбогч, прокси холболт үүсгэх, эсвэл хариулт унших. Бүх хязгаарыг нэгэн зэрэг өсгөх нь тэр ялгааг хийхэд хэцүү болгож, дарааллыг таны хянадаггүй прокси руу шилжүүлж болно.

Холбоотой нийтлэлүүд