ເລືອກເສັ້ນທາງພຣັອກຊີ HTTPX ດ້ວຍ proxy ແລະ mounts
ໃຊ້ proxy ແລະ transport mounts ຂອງ HTTPX ດ້ວຍ scheme ຖືກຕ້ອງ ການໃຊ້ສະພາບແວດລ້ອມຊັດເຈນ ແລະເວລາເຊື່ອມຕໍ່ກັບອ່ານທີ່ແຍກກັນ.
ໃຊ້ 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 ແລະຄຳຕອບແບບສະຕຣີມໃຫ້ຖືກກ່ອນຖືວ່າເປັນຫຼັກຖານວ່າພຣັອກຊີເຂົ້າບໍ່ເຖິງ.