ສຳລັບຄຳຮ້ອງຂໍອະຊິງໂຄຣນັສໜຶ່ງຄັ້ງຜ່ານ 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 ສະເພາະເມື່ອແວດລ້ອມທີ່ໂປຣເຊສສືບທອດແມ່ນນະໂຍບາຍເສັ້ນທາງທີ່ຕ້ອງການ.

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