Autentifikasiyasız HTTP proksisi üzərindən bir asinxron sorğu üçün marşrutu session.get() üzərində saxlayın. Lazımdırsa, layihəyə aiohttp əlavə edin:

uv add aiohttp

Aşağıdakı sənədləşdirmə ünvanını öz HTTP dinləyicinizlə və ya HTTP proksi siyahısından namizədlə dəyişin. O, HTTPS hədəfinə CONNECT icazəsi verməlidir; yalnız SOCKS dəstəkləyən son nöqtə bu proxy arqumenti əvəzinə uyğun konnektor tələb edir.

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

Sorğu HTTP statusunu və cavab mətninin ilk 200 simvolunu çap edir. Burada 403 və ya 429 yoxlanıla bilən cavab olaraq qalır; tətbiqiniz uğursuz statusları istisnaya çevirməlidirsə, response.raise_for_status() çağırın. Asinxron kontekst menecerləri bloklar bitəndə, o cümlədən istisna zamanı sessiyanı və cavabı bağlayır.

15 saniyəlik total büdcəsi sorğu əməliyyatını əhatə edir. 5 saniyəlik connect büdcəsinə hovuzda mövcud bağlantını gözləmək də daxildir; buna görə məşğul hovuz yeni soket açılmadan vaxtı tükədə bilər. Tək çağırışı paralel yoxlamalara uyğunlaşdıranda bu fərq vacibdir.

trust_env=False göstərilən marşrutu açıq saxlayır. aiohttp standart olaraq proksi mühit dəyişənlərini aşkar etmir; başqa terminalda birini ixrac etmək bu çağırışı konfiqurasiya etmir. trust_env=True yalnız prosesin miras aldığı mühit nəzərdə tutulan marşrutlaşdırma siyasəti olduqda seçilməlidir.

Əlaqəli məqalələr