Jedno żądanie aiohttp przez proxy HTTP
Wyślij żądanie aiohttp przez proxy HTTP bez uwierzytelniania, sprawdź status i zakończ w jawnym asynchronicznym cyklu życia.
Dla jednego asynchronicznego żądania przez proxy HTTP bez uwierzytelniania pozostaw trasę przy session.get(). W razie potrzeby dodaj aiohttp do projektu:
uv add aiohttpZastąp poniższy adres dokumentacyjny własnym punktem nasłuchowym HTTP lub kandydatem z listy proxy HTTP. Musi zezwalać na CONNECT do celu HTTPS; punkt obsługujący tylko SOCKS potrzebuje odpowiedniego konektora zamiast tego argumentu 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())
Żądanie wypisuje status HTTP i pierwsze 200 znaków tekstu odpowiedzi. 403 lub 429 nadal jest tutaj odpowiedzią, którą można sprawdzić; wywołaj response.raise_for_status(), jeśli aplikacja ma zamieniać nieudane statusy w wyjątki. Asynchroniczne menedżery kontekstu zamykają sesję i odpowiedź po zakończeniu bloków, także przy wyjątku.
15-sekundowy budżet total obejmuje operację żądania. 5-sekundowy budżet connect obejmuje czekanie na dostępne połączenie z puli, więc zajęta pula może zużyć go przed otwarciem nowego gniazda. To ważne przy przekształcaniu pojedynczego wywołania we współbieżne kontrole.
trust_env=False utrzymuje pokazaną trasę jawną. aiohttp domyślnie nie wykrywa zmiennych środowiskowych proxy; eksport zmiennej w innym terminalu nie skonfiguruje tego wywołania. Wybieraj trust_env=True tylko wtedy, gdy odziedziczone środowisko procesu jest zamierzoną polityką routingu.