Один запит aiohttp через HTTP-проксі
Надішліть запит aiohttp через HTTP-проксі без автентифікації, перевірте статус і завершіть його в явному асинхронному життєвому циклі.
Для одного асинхронного запиту через HTTP-проксі без автентифікації задайте маршрут на session.get(). За потреби додайте aiohttp до проєкту:
uv add aiohttpЗамініть документаційну адресу нижче своїм HTTP-слухачем або кандидатом зі списку HTTP-проксі. Він має дозволяти CONNECT до HTTPS-цілі; точці лише з SOCKS потрібен відповідний конектор замість цього аргументу proxy.
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())
Запит виводить статус HTTP і перші 200 символів тексту відповіді. Відповідь 403 або 429 тут залишається доступною для перевірки; викличте response.raise_for_status(), якщо застосунок має перетворювати невдалі статуси на винятки. Асинхронні менеджери контексту закривають сесію й відповідь після завершення блоків, зокрема за винятку.
15-секундний бюджет total охоплює операцію запиту. 5-секундний бюджет connect включає очікування доступного з’єднання з пулу, тож зайнятий пул може вичерпати його до відкриття нового сокета. Це важливо під час перетворення одиночного виклику на одночасні перевірки.
trust_env=False зберігає показаний маршрут явним. aiohttp типово не виявляє змінні оточення проксі; експорт такої змінної в іншому терміналі не налаштує цей виклик. Вибирайте trust_env=True лише тоді, коли успадковане оточення процесу — потрібна політика маршрутизації.