Satu permintaan aiohttp melalui proksi HTTP
Hantar permintaan aiohttp melalui proksi HTTP tanpa pengesahan, periksa statusnya dan tamatkan dalam kitar hayat tak segerak yang jelas.
Bagi satu permintaan tak segerak melalui proksi HTTP tanpa pengesahan, tetapkan laluan pada session.get(). Tambahkan aiohttp pada projek jika perlu:
uv add aiohttpGantikan alamat dokumentasi di bawah dengan pendengar HTTP anda atau calon daripada senarai proksi HTTP. Ia mesti membenarkan CONNECT ke destinasi HTTPS; titik hujung khusus SOCKS memerlukan penyambung yang sesuai dan bukannya 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 aksara pertama teks respons. Respons 403 atau 429 masih boleh diperiksa di sini; panggil response.raise_for_status() jika aplikasi perlu menukar status tidak berjaya menjadi pengecualian. Pengurus konteks tak segerak menutup sesi dan respons apabila bloknya selesai, termasuk semasa pengecualian.
Peruntukan total selama 15 saat meliputi operasi permintaan. Peruntukan connect selama 5 saat merangkumi menunggu sambungan yang tersedia dalam kumpulan, jadi kumpulan sibuk boleh menghabiskannya sebelum soket baharu dibuka. Perbezaan ini penting apabila menyesuaikan satu panggilan kepada semakan serentak.
trust_env=False memastikan laluan yang ditunjukkan jelas. aiohttp tidak menemui pemboleh ubah persekitaran proksi secara lalai; mengeksport satu di terminal lain tidak mengkonfigurasi panggilan ini. Pilih trust_env=True hanya apabila persekitaran diwarisi proses ialah dasar penghalaan yang dimaksudkan.