PoolTimeout ໝາຍເຖິງ HTTPX ເອົາການເຊື່ອມຕໍ່ຈາກພູລບໍ່ໄດ້ພາຍໃນເວລາລໍຖ້າທີ່ຕັ້ງໄວ້. ບໍ່ແມ່ນຫຼັກຖານວ່າການເຊື່ອມຕໍ່ TCP ໃໝ່ໄປພຣັອກຊີໝົດເວລາ. ຄຳຮ້ອງຂໍທີສອງອາດຍັງລໍຢູ່ໃນໂປຣເຊສຂອງທ່ານ.

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

ເຮັດໃຫ້ຊັດວ່າໃຜຮັບຜິດຊອບຄຳຕອບສະຕຣີມ

import httpx

limits = httpx.Limits(
    max_connections=1,
    max_keepalive_connections=1,
)
timeout = httpx.Timeout(
    connect=5, read=10, write=10, pool=1
)

with httpx.Client(
    proxy="http://203.0.113.10:8080",
    trust_env=False,
    limits=limits,
    timeout=timeout,
) as client:
    with client.stream("GET", "https://example.com/") as response:
        print(response.status_code)
        for chunk in response.iter_bytes():
            print(len(chunk))

    next_response = client.get("https://example.com/")
    print(next_response.status_code)

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

ເມື່ອສະຕຣີມແບບຈັດການເອງ ເຊັ່ນ client.send(request, stream=True) ໂຄດຂອງທ່ານຮັບຜິດຊອບການປິດສຸດທ້າຍ. ສຳລັບ AsyncClient ຕ້ອງລໍການເກັບກວາດເອງທີ່ກົງກັນດ້ວຍ response.aclose(). ປິດຄຳຕອບທີ່ຍັງບໍ່ອ່ານຄືນຄວາມຈຸ ແຕ່ອາດຕ້ອງຖິ້ມການເຊື່ອມຕໍ່ຂ້າງລຸ່ມແທນໃຊ້ຊ້ຳ.

ອ່ານຊື່ຂໍ້ຍົກເວັ້ນ

ConnectTimeout ກ່ຽວກັບການສ້າງການເຊື່ອມຕໍ່. ReadTimeout ກ່ຽວກັບລໍຂໍ້ມູນຄຳຕອບ. PoolTimeout ກ່ຽວກັບການໄດ້ຊ່ອງການເຊື່ອມຕໍ່. ບັນທຶກແຕ່ «ພຣັອກຊີໝົດເວລາ» ຈະເສຍຄວາມຕ່າງທີ່ໃຊ້ເລືອກວິທີແກ້.

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

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

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