HTTP proksisi ilə bir aiohttp sorğusu
aiohttp ilə autentifikasiyasız HTTP proksi sorğusu göndərin, statusunu yoxlayın və açıq müəyyən edilmiş asinxron həyat dövründə tamamlayın.
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 aiohttpAş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.