ส่งคำขอ 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 วินาทีรวมการรอการเชื่อมต่อว่างจากพูล ดังนั้นพูลที่ยุ่งอาจใช้เวลานี้หมดก่อนเปิดซ็อกเก็ตใหม่ ความต่างนี้สำคัญเมื่อนำการเรียกครั้งเดียวไปปรับเป็นการตรวจพร้อมกัน
trust_env=False ทำให้เส้นทางที่แสดงชัดเจน aiohttp ไม่ค้นหาตัวแปรสภาพแวดล้อมพร็อกซีโดยค่าเริ่มต้น การ export ตัวแปรในเทอร์มินัลอื่นไม่ได้กำหนดค่าการเรียกนี้ เลือก trust_env=True เฉพาะเมื่อสภาพแวดล้อมที่โปรเซสสืบทอดมาคือนโยบายเส้นทางที่ต้องการ