from urllib.request import ProxyHandler, build_opener

def make_proxy_opener(proxy_uri):
    return build_opener(ProxyHandler({
        "http": proxy_uri,
        "https": proxy_uri,
    }))

opener = make_proxy_opener("http://proxy.example.net:8080")
# Use opener.open(destination, timeout=10) for this route.

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

urllib.request.install_opener() ປ່ຽນຄ່າເລີ່ມຕົ້ນທົ່ວຂະບວນການທີ່ການເອີ້ນ urlopen() ລະດັບໂມດູນຕໍ່ມາໃຊ້. ດັ່ງນັ້ນ ຕົວກວດສອບທີ່ວຽນຜ່ານ proxy ອາດປະໃຫ້ຄຳຮ້ອງທີ່ບໍ່ກ່ຽວຂ້ອງໃຊ້ຈຸດສຸດທ້າຍສຸດທ້າຍຂອງມັນ. ການຕິດຕັ້ງຊົ່ວຄາວ ແລະ ການຄືນສະພາບເມື່ອທຳຄວາມສະອາດ ຍັງອະນຸຍາດໃຫ້ຄຳຮ້ອງພ້ອມກັນເຮັດວຽກໃນລະຫວ່າງການປ່ຽນແປງຮ່ວມ.

socket.setdefaulttimeout() ກໍປ່ຽນຄ່າເລີ່ມຕົ້ນສຳລັບ socket ທີ່ສ້າງຂຶ້ນຕໍ່ມາເຊັ່ນກັນ. ໃຊ້ເວລາກຳນົດລະດັບການດຳເນີນງານ ເມື່ອມີພຽງການກວດສອບທີ່ຄວນໄດ້ຮັບມັນ.

ປິດການຕອບສະໜອງຂອງການກວດສອບ ແລະ ເກັບຜົນໄດ້ຮັບໃຫ້ຈຳເພາະ: ການຕອບສະໜອງຄວາມຜິດພາດ HTTP ບໍ່ແມ່ນຜູ້ຟັງ proxy ທີ່ຕາຍແລ້ວໂດຍອັດຕະໂນມັດ. ຖ້າການກວດສອບ urllib ແບບ synchronous ຖືກໃຊ້ໃນບໍລິການ async ໃຫ້ຍ້າຍວຽກທີ່ສະກັດໄປຫາ worker ທີ່ເໝາະສົມ; ການຕັດສິນໃຈປະຕິບັດນັ້ນບໍ່ໄດ້ເຮັດໃຫ້ການປ່ຽນແປງ opener ທົ່ວໂລກແຍກອອກ.

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

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