สำหรับคำขออะซิงโครนัสหนึ่งครั้งผ่านพร็อกซี 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 วินาทีรวมการรอการเชื่อมต่อว่างจากพูล ดังนั้นพูลที่ยุ่งอาจใช้เวลานี้หมดก่อนเปิดซ็อกเก็ตใหม่ ความต่างนี้สำคัญเมื่อนำการเรียกครั้งเดียวไปปรับเป็นการตรวจพร้อมกัน

trust_env=False ทำให้เส้นทางที่แสดงชัดเจน aiohttp ไม่ค้นหาตัวแปรสภาพแวดล้อมพร็อกซีโดยค่าเริ่มต้น การ export ตัวแปรในเทอร์มินัลอื่นไม่ได้กำหนดค่าการเรียกนี้ เลือก trust_env=True เฉพาะเมื่อสภาพแวดล้อมที่โปรเซสสืบทอดมาคือนโยบายเส้นทางที่ต้องการ

บทความที่เกี่ยวข้อง