ຄຳຮ້ອງຂໍ aiohttp ໜຶ່ງຄັ້ງຜ່ານ HTTP ພຣັອກຊີ
ສົ່ງຄຳຮ້ອງຂໍ aiohttp ຜ່ານ HTTP ພຣັອກຊີບໍ່ຢືນຢັນຕົວຕົນ, ກວດສະຖານະ ແລະຈົບໃນວົງຈອນອະຊິງໂຄຣນັສທີ່ຊັດເຈນ.
ສຳລັບຄຳຮ້ອງຂໍອະຊິງໂຄຣນັສໜຶ່ງຄັ້ງຜ່ານ HTTP ພຣັອກຊີບໍ່ຢືນຢັນ, ກຳນົດເສັ້ນທາງໃນ session.get(). ເພີ່ມ aiohttp ໃນໂຄງການຖ້າຈຳເປັນ:
uv add aiohttpປ່ຽນທີ່ຢູ່ເອກະສານຂ້າງລຸ່ມເປັນຈຸດຟັງ HTTP ຂອງທ່ານ ຫຼືຜູ້ສະໝັກຈາກ ລາຍການພຣັອກຊີ HTTP. ມັນຕ້ອງອະນຸຍາດ CONNECT ຫາປາຍທາງ HTTPS; ຈຸດປາຍທີ່ມີແຕ່ SOCKS ຕ້ອງໃຊ້ຕົວເຊື່ອມທີ່ເໝາະແທນອາກິວເມັນ proxy ນີ້.
import asyncio
import aiohttp
async def main():
timeout = aiohttp.ClientTimeout(total=15, connect=5)
async with aiohttp.ClientSession(
timeout=timeout,
trust_env=False,
) as session:
async with session.get(
"https://example.com/",
proxy="http://203.0.113.10:8080",
) as response:
print(response.status)
print((await response.text())[:200])
asyncio.run(main())
ຄຳຮ້ອງຂໍພິມສະຖານະ HTTP ແລະ 200 ຕົວອັກສອນທຳອິດຂອງຂໍ້ຄວາມຕອບ. 403 ຫຼື 429 ຍັງເປັນຄຳຕອບທີ່ກວດໄດ້ໃນນີ້; ເອີ້ນ response.raise_for_status() ຖ້າແອັບຕ້ອງປ່ຽນສະຖານະບໍ່ສຳເລັດເປັນຂໍ້ຍົກເວັ້ນ. ຕົວຈັດການບໍລິບົດອະຊິງໂຄຣນັສປິດເຊດຊັນແລະຄຳຕອບເມື່ອບລັອກຈົບ, ເຖິງມີຂໍ້ຍົກເວັ້ນ.
ງົບ total 15 ວິນາທີຄອບຄຸມການດຳເນີນຄຳຮ້ອງຂໍ. ງົບ connect 5 ວິນາທີລວມການລໍຖ້າການເຊື່ອມຕໍ່ທີ່ວ່າງໃນ pool, ດັ່ງນັ້ນ pool ທີ່ບໍ່ວ່າງອາດໃຊ້ມັນໝົດກ່ອນເປີດ socket ໃໝ່. ຄວາມຕ່າງນີ້ສຳຄັນເມື່ອປ່ຽນຈາກການເອີ້ນດຽວເປັນການກວດພ້ອມກັນ.
trust_env=False ຮັກສາເສັ້ນທາງໃນຕົວຢ່າງໃຫ້ຊັດເຈນ. aiohttp ບໍ່ຄົ້ນຫາຕົວແປແວດລ້ອມພຣັອກຊີໂດຍຄ່າເລີ່ມຕົ້ນ; ການ export ຕົວໜຶ່ງໃນ terminal ອື່ນບໍ່ໄດ້ຕັ້ງຄ່າການເອີ້ນນີ້. ເລືອກ trust_env=True ສະເພາະເມື່ອແວດລ້ອມທີ່ໂປຣເຊສສືບທອດແມ່ນນະໂຍບາຍເສັ້ນທາງທີ່ຕ້ອງການ.