ໃຊ້ proxy= ເມື່ອເອັນພອຍດຽວຕ້ອງຈັດການຄຳຂໍຂອງ client. ໃຊ້ mounts= ເມື່ອ scheme ປາຍທາງຕ້ອງການຄົນລະເສັ້ນທາງ. ຕົວຢ່າງໃຊ້ອິນເຕີເຟດ HTTPX ເຫຼົ່ານີ້; ໂຄງການທີ່ໃຊ້ API ເກົ່າ proxies= ຕ້ອງຕັ້ງຄ່າໃຫ້ກົງກັບຮຸ່ນນັ້ນ.

ເອັນພອຍດຽວ

import httpx

timeout = httpx.Timeout(15.0, connect=5.0)

with httpx.Client(
    proxy="http://127.0.0.1:8080",
    trust_env=False,
    timeout=timeout,
) as client:
    response = client.get("https://example.com/")
    response.raise_for_status()
    print(response.status_code)

ແທນ listener ໃນເຄື່ອງດ້ວຍພຣັອກຊີ HTTP ທີ່ກຳລັງເຮັດວຽກ. ຕົວເລືອກຈາກລາຍການພຣັອກຊີ HTTPກໍຍັງຕ້ອງທົດສອບກັບປາຍທາງຂອງທ່ານ. ເປົ້າໝາຍ HTTPS ໃຊ້ເອັນພອຍ http:// ນີ້ຜ່ານ CONNECT ໄດ້. ປ່ຽນ scheme ເປັນ https:// ແມ່ນຂໍ TLS ເຖິງຕົວພຣັອກຊີ ທີ່ listener ແລະ client ຕ້ອງຮອງຮັບ.

ແຍກເສັ້ນທາງຕາມ scheme ປາຍທາງ

import httpx

mounts = {
    "http://": httpx.HTTPTransport(
        proxy="http://127.0.0.1:8080",
        trust_env=False,
    ),
    "https://": httpx.HTTPTransport(
        proxy="http://127.0.0.1:8081",
        trust_env=False,
    ),
}

with httpx.Client(
    mounts=mounts,
    trust_env=False,
    timeout=httpx.Timeout(15.0, connect=5.0),
) as client:
    response = client.get("https://example.com/")
    response.raise_for_status()
    print(response.status_code)

ຄີ mount ຈັບຄູ່ກັບ URL ເປົ້າໝາຍ. ໃນນີ້ HTTP ເລືອກພອດ 8080 ແລະ HTTPS ເລືອກ 8081. ຄ່າພຣັອກຊີອະທິບາຍໂປຣໂຕຄອນຂອງ listener ເອງ ດັ່ງນັ້ນ mount HTTPS ຈຶ່ງມີພຣັອກຊີ http:// ໄດ້ຢ່າງຖືກຕ້ອງ. ໃສ່ເອັນພອຍຂອງທ່ານແລ້ວກວດທັງສອງ scheme ປາຍທາງ.

ທັງສອງວິທີຕັ້ງ trust_env=False ຢູ່ client ແລະ transport ເມື່ອມີການສົ່ງເຂົ້າມາ. ຖ້າບໍ່ຕັ້ງ HTTPX ຈະອ່ານຕົວແປສະພາບແວດລ້ອມຂອງພຣັອກຊີແລະໃບຢັ້ງຢືນໂດຍປົກກະຕິ. ຖ້າການນຳໃຊ້ພຶ່ງຕົວແປເຫຼົ່ານັ້ນ ໃຫ້ເປີດການຄົ້ນພົບຫຼືຕັ້ງເສັ້ນທາງແລະຄວາມເຊື່ອຖືຊັດເຈນ. ໃຊ້ TLS context ແລະຄ່າ CA ທີ່ຮຸ່ນ HTTPX ຮອງຮັບສຳລັບຄວາມເຊື່ອຖືສ່ວນຕົວ ແລະເປີດການກວດປາຍທາງໄວ້. ຄວາມເຊື່ອຖືພຣັອກຊີ HTTPS ອາດແຍກຈາກປາຍທາງໄດ້.

httpx.Timeout(15.0, connect=5.0) ປ່ຽນເວລາເຊື່ອມຕໍ່ ແລະໃຫ້ຄ່າເລີ່ມຕົ້ນແກ່ສ່ວນເວລາລໍຖ້າອື່ນທີ່ຕັ້ງໄວ້. ການອ່ານ ຂຽນ ແລະລໍ pool ມີຂອບເຂດແຍກກັນ; ສິບຫ້າວິນາທີບໍ່ແມ່ນເສັ້ນຕາຍລວມຂອງເວລາຈິງທີ່ຜ່ານໄປ. Pool timeout ອາດໝາຍວ່າວຽກອື່ນຄອງການເຊື່ອມຕໍ່ທີ່ມີຢູ່. ປິດ client ແລະຄຳຕອບແບບສະຕຣີມໃຫ້ຖືກກ່ອນຖືວ່າເປັນຫຼັກຖານວ່າພຣັອກຊີເຂົ້າບໍ່ເຖິງ.

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