Један 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() ако апликација треба да претвара неуспешне статусе у изузетке. Асинхрони управљачи контекста затварају сесију и одговор по завршетку блокова, укључујући случај изузетка.
Буџет total од 15 секунди покрива операцију захтева. Буџет connect од 5 секунди укључује чекање на доступну везу из скупа, па заузет скуп може потрошити време пре отварања новог сокета. То је важно при прилагођавању једног позива за истовремене провере.
trust_env=False чини приказану руту изричитом. aiohttp подразумевано не проналази прокси променљиве окружења; извоз једне у другом терминалу неће подесити овај позив. Изаберите trust_env=True само када наслеђено окружење процеса представља жељену политику усмеравања.