ການສ້າງພຸລຜູ້ເຮັດວຽກບໍ່ໄດ້ສົ່ງໜ້າທີ່ດາວໂຫລດແລ້ວໃຫ້ຜູ້ເອີ້ນ. ເກັບ ແລະ ໃຊ້ຄ່າທີ່ວຽກທີ່ສົ່ງໄປສົ່ງຄືນ:

from concurrent.futures import ThreadPoolExecutor
import urllib3

manager = urllib3.ProxyManager(
    'http://proxy.example:8080',
    maxsize=4,
    block=True,
)

def fetch(url):
    response = manager.request(
        'GET', url, timeout=urllib3.Timeout(connect=5, read=15),
    )
    return url, response.status, response.data

try:
    with ThreadPoolExecutor(max_workers=4) as workers:
        results = list(workers.map(fetch, urls))
finally:
    manager.clear()

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

ProxyManager ທີ່ຕັ້ງຄ່າແລ້ວເປັນເຈົ້າຂອງພຸລການເຊື່ອມຕໍ່ສຳລັບຄຳຮ້ອງຂໍ. ດ້ວຍໂໝດຄຳຕອບທີ່ໂຫລດລ່ວງໜ້າຕາມຄ່າເລີ່ມຕົ້ນທີ່ໃຊ້ຢູ່ນີ້, urllib3 ອ່ານເນື້ອຫາ ແລະ ສົ່ງການເຊື່ອມຕໍ່ຄືນສູ່ພຸລຂອງມັນ. ສະບັບສະຕຣີມຈະຕ້ອງມີການໃຊ້ຢ່າງຊັດເຈນ ແລະ ການປ່ອຍການເຊື່ອມຕໍ່.

maxsize ໂດຍປົກກະຕິຄວບຄຸມການເຊື່ອມຕໍ່ທີ່ເກັບໄວ້ໃຊ້ຄືນໄດ້, ບໍ່ແມ່ນຂີດຈຳກັດແຂງຕໍ່ທຸກຊອກເກັດທີ່ເປີດ. block=True ປ່ຽນພຶດຕິກຳພຸລທີ່ກ່ຽວຂ້ອງ ເພື່ອໃຫ້ຜູ້ເອີ້ນລໍຖ້າການເຊື່ອມຕໍ່ທີ່ຫວ່າງ ແທນທີ່ຈະເປີດເພີ່ມເກີນຂີດຈຳກັດຂອງພຸລນັ້ນ.

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

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