Untuk satu permintaan asinkron lewat proxy HTTP tanpa autentikasi, tetapkan rutenya pada session.get(). Tambahkan aiohttp ke proyek jika perlu:

uv add aiohttp

Ganti alamat dokumentasi di bawah dengan listener HTTP Anda atau kandidat dari daftar proxy HTTP. Endpoint harus mengizinkan CONNECT ke tujuan HTTPS; endpoint khusus SOCKS membutuhkan konektor yang sesuai, bukan argumen proxy ini.

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

Permintaan mencetak status HTTP dan 200 karakter pertama teks respons. Respons 403 atau 429 tetap dapat diperiksa di sini; panggil response.raise_for_status() jika aplikasi harus mengubah status tidak berhasil menjadi pengecualian. Pengelola konteks asinkron menutup sesi dan respons saat bloknya selesai, termasuk ketika terjadi pengecualian.

Jatah total selama 15 detik mencakup operasi permintaan. Jatah connect selama 5 detik mencakup menunggu koneksi yang tersedia dalam pool, sehingga pool sibuk dapat menghabiskannya sebelum soket baru dibuka. Perbedaan ini penting saat mengadaptasi panggilan tunggal menjadi pemeriksaan serentak.

trust_env=False menjaga rute contoh tetap eksplisit. aiohttp tidak menemukan variabel lingkungan proxy secara bawaan; mengekspornya di terminal lain tidak mengonfigurasi panggilan ini. Pilih trust_env=True hanya ketika lingkungan yang diwarisi proses memang kebijakan perutean yang dimaksud.

Artikel terkait