HTTP proksi orqali bitta aiohttp so‘rovi
aiohttp bilan autentifikatsiyasiz HTTP proksi so‘rovi yuboring, holatini tekshiring va aniq asinxron hayot davrida yakunlang.
Autentifikatsiyasiz HTTP proksi orqali bitta asinxron so‘rov uchun yo‘lni session.get() da saqlang. Kerak bo‘lsa loyihaga aiohttp qo‘shing:
uv add aiohttpQuyidagi hujjat manzilini o‘z HTTP tinglovchingiz yoki HTTP proksilar ro‘yxatidagi nomzod bilan almashtiring. U HTTPS maqsadiga CONNECT ruxsatini berishi kerak; faqat SOCKS ishlatadigan nuqtaga bu proxy argumenti o‘rniga mos konnektor kerak.
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())
So‘rov HTTP holatini va javob matnining dastlabki 200 belgisini chiqaradi. 403 yoki 429 bu yerda tekshiriladigan javob bo‘lib qoladi; ilovangiz muvaffaqiyatsiz holatlarni istisnoga aylantirishi kerak bo‘lsa response.raise_for_status() ni chaqiring. Asinxron kontekst boshqaruvchilari bloklari tugaganda, istisno yuz bersa ham, sessiya va javobni yopadi.
15 soniyalik total budjeti so‘rov amalini qamraydi. 5 soniyalik connect budjeti hovuzdagi bo‘sh ulanishni kutishni ham o‘z ichiga oladi, shuning uchun band hovuz yangi soket ochilishidan oldin uni sarflashi mumkin. Yagona chaqiruvni bir vaqtdagi tekshiruvlarga moslashda bu farq muhim.
trust_env=False ko‘rsatilgan yo‘lni aniq saqlaydi. aiohttp odatda proksi muhit o‘zgaruvchilarini topmaydi; bittasini boshqa terminalda eksport qilish bu chaqiruvni sozlamaydi. trust_env=True ni faqat jarayon meros olgan muhit ko‘zlangan marshrutlash siyosati bo‘lganda tanlang.