ສະລອຍ proxy ອາດມີຈຸດປາຍທາງທີ່ມີຄວາມສາມາດແຕກຕ່າງກັນຫຼາຍ. ການອະນຸຍາດໃຫ້ມີຫ້າສິບການດຳເນີນງານໃນແອັບພລິເຄຊັນທັງໝົດ ບໍ່ໄດ້ປ້ອງກັນສີ່ສິບເກົ້າຂອງພວກມັນຈາກການເລືອກ proxy ດຽວກັນ.

ຖ້ານະໂຍບາຍແມ່ນ “ການດຳເນີນງານທີ່ກຳລັງເຮັດຢູ່ສູງສຸດສີ່ຜ່ານແຕ່ລະ proxy ທີ່ເລືອກ”, ຈົ່ງສະແດງນະໂຍບາຍນັ້ນໂດຍກົງ. ເກັບ semaphore ໄວ້ສຳລັບແຕ່ລະຕົວຕົນຂອງ proxy, ແລະ ຮັບມັນອ້ອມວຽກທີ່ໃຊ້ຄວາມສາມາດຂອງ proxy.

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 ຂອງ proxy ຖືກກວດສອບແລ້ວ. ສຳລັບຄຳຂໍສາທາລະນະໃນເສັ້ນທາງ proxy ສາທາລະນະທີ່ອະນຸຍາດ, ລາຍຊື່ proxy HTTP ສະໜອງຜູ້ສະໝັກສຳລັບ URL proxy ຂອງ aiohttp. ແອັບພລິເຄຊັນຈິງຄວນຕັ້ງເວລາໝົດຂອງຄຳຂໍຂອງຕົນເອງ ແລະ ຕັດສິນວ່າຕ້ອງການຂໍ້ມູນຄຳຕອບເທົ່າໃດ. ການອ່ານໄຟລ໌ໃຫຍ່ທັງໝົດເຂົ້າໃນຫນ່ວຍຄວາມຈຳ ແມ່ນການຕັດສິນເລື່ອງຊັບພະຍາກອນແຍກຕ່າງຫາກ.

ຮັກສາການອະນຸຍາດສຳລັບພາກສ່ວນທີ່ແພງ

ການປ່ອຍ semaphore ທັນທີທີ່ຫົວຂໍ້ຄຳຕອບມາຮອດ ອາດເຮັດໃຫ້ຂີດຈຳກັດທີ່ຕັ້ງໄວ້ລົ້ມເຫຼວ. ເນື້ອຄວາມທີ່ຖ່າຍທອດອາດສືບຕໍ່ໃຊ້ການເຊື່ອມຕໍ່ອີກດົນ. ຮັກສາການອະນຸຍາດຈົນກວ່າເນື້ອຄວາມຈະຖືກໃຊ້ໝົດ ຫຼື ຄຳຕອບຖືກປິດຕາມຂະບວນການເຮັດວຽກຂອງແອັບພລິເຄຊັນ.

ຜູ້ຈັດການບໍລິບົດທີ່ຊ້ອນກັນເຮັດໃຫ້ການທຳຄວາມສະອາດເຫັນໄດ້ເມື່ອຂໍ້ຍົກເວັ້ນ ຫຼື ການຍົກເລີກອອກຈາກການດຳເນີນງານ. ຫຼີກລ້ຽງການຮັບດ້ວຍມື ແລະ ປ່ອຍສະເພາະຢູ່ທາງລຸ່ມຂອງຟັງຊັນທີ່ສຳເລັດ.

ຂີດຈຳກັດການເຊື່ອມຕໍ່ຕອບຄຳຖາມອື່ນ

ຂີດຈຳກັດຂອງຕົວເຊື່ອມຕໍ່ aiohttp ຈຳກັດການເຊື່ອມຕໍ່ຕາມກົດລະບຽບທີ່ເອກະສານຂອງຕົວເຊື່ອມຕໍ່. ພວກມັນຍັງມີປະໂຫຍດຄຽງຂ້າງ semaphore ຂອງແອັບພລິເຄຊັນ. ຂີດຈຳກັດການເຊື່ອມຕໍ່ຕໍ່ປາຍທາງ ບໍ່ໄດ້ສະແດງ, ພຽງແຕ່ຊື່ຂອງມັນ, ງົບປະມານທີ່ແບ່ງປັນໂດຍທຸກປາຍທາງທີ່ຖືກມອບໝາຍໃຫ້ proxy ດຽວ.

ຈົ່ງແຍກຄວາມພ້ອມກັນອອກຈາກອັດຕາຄຳຂໍ. ສີ່ຄຳຂໍອາຍຸຍືນ ແລະ ສີ່ຄຳຂໍສັ້ນຫຼາຍ ໃຊ້ໂຄຕາຄວາມພ້ອມກັນດຽວກັນ ໃນຂະນະທີ່ຜະລິດອັດຕາຄຳຂໍຕໍ່ວິນາທີຕ່າງກັນ. ບໍລິການທີ່ມີນະໂຍບາຍອັດຕາ ອາດຕ້ອງການການປັບຈັງຫວະ ຫຼື ຕົວຈຳກັດອັດຕາແຍກ.

ເລືອກຕົວະລະບຸ proxy ທີ່ໝັ້ນຄົງ ແລະ ບໍ່ເປັນຄວາມລັບສຳລັບບັນທຶກ ແລະ ມາດຕະວັດ. ຖ້າ URL ສອງອັນທີ່ມີຂໍ້ມູນຢືນຢັນອ້າງອີງເຖິງສະລອຍຄວາມສາມາດດຽວກັນ, ຈົ່ງຕັດສິນວ່າພວກມັນຄວນແບ່ງປັນງົບປະມານດຽວຫຼືບໍ່. ໃນທາງກົງກັນຂ້າມ, ພອດ ຫຼື ບັນຊີຕ່າງກັນ ອາດເປັນຕົວແທນຂີດຈຳກັດແຍກ ເມື່ອຜູ້ປະຕິບັດການບັນທຶກພວກມັນເຊັ່ນນັ້ນ.

ເມື່ອທຣູພຸດຫຼຸດລົງ, ກວດເບິ່ງວ່າວຽກກຳລັງລໍຖ້າຢູ່ໃສ: semaphore ຂອງທ່ານ, ຕົວເຊື່ອມຕໍ່, ການຕັ້ງຄ່າການເຊື່ອມຕໍ່ proxy, ຫຼື ການອ່ານຄຳຕອບ. ການຍົກທຸກຂີດຈຳກັດພ້ອມກັນ ເຮັດໃຫ້ຄວາມແຕກຕ່າງນັ້ນຍາກຂຶ້ນ ແລະ ອາດຍ້າຍຄິວໄປຫາ proxy ທີ່ທ່ານບໍ່ໄດ້ຄວບຄຸມ.

ບົດຄວາມທີ່ກ່ຽວຂ້ອງ