Với một yêu cầu bất đồng bộ qua proxy HTTP không xác thực, giữ tuyến ở session.get(). Thêm aiohttp vào dự án nếu cần:

uv add aiohttp

Thay địa chỉ dùng trong tài liệu bên dưới bằng đầu nghe HTTP của bạn hoặc ứng viên từ danh sách proxy HTTP. Nó phải cho phép CONNECT đến đích HTTPS; điểm cuối chỉ dùng SOCKS cần bộ kết nối phù hợp thay cho đối số proxy này.

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())

Yêu cầu in trạng thái HTTP và 200 ký tự đầu của văn bản phản hồi. 403 hay 429 ở đây vẫn là phản hồi có thể kiểm tra; gọi response.raise_for_status() nếu ứng dụng cần chuyển trạng thái không thành công thành ngoại lệ. Trình quản lý ngữ cảnh bất đồng bộ đóng phiên và phản hồi khi khối tương ứng kết thúc, kể cả khi có ngoại lệ.

Ngân sách total 15 giây bao trùm thao tác yêu cầu. Ngân sách connect 5 giây gồm thời gian chờ kết nối còn trống trong pool, nên pool bận có thể dùng hết trước khi mở socket mới. Sự khác biệt quan trọng khi chuyển một lời gọi thành các kiểm tra đồng thời.

trust_env=False giữ tuyến được chỉ rõ trong ví dụ. Mặc định aiohttp không phát hiện biến môi trường proxy; xuất biến ở terminal khác không cấu hình lời gọi này. Chỉ chọn trust_env=True khi môi trường mà tiến trình kế thừa là chính sách định tuyến mong muốn.

Bài viết liên quan