Eén aiohttp-verzoek via een HTTP-proxy
Stuur met aiohttp een verzoek via een HTTP-proxy zonder authenticatie, bekijk de status en rond af binnen een expliciete asynchrone levenscyclus.
Houd voor één asynchroon verzoek via een HTTP-proxy zonder authenticatie de route bij session.get(). Voeg aiohttp zo nodig aan het project toe:
uv add aiohttpVervang het documentatieadres hieronder door je HTTP-luisterpunt of een kandidaat uit de lijst met HTTP-proxy’s. Het moet CONNECT naar de HTTPS-bestemming toestaan; een endpoint met alleen SOCKS heeft een geschikte connector nodig in plaats van dit proxy-argument.
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())
Het verzoek toont zijn HTTP-status en de eerste 200 tekens van de antwoordtekst. Een 403 of 429 blijft hier een antwoord dat je kunt bekijken; roep response.raise_for_status() aan als je applicatie mislukte statussen in uitzonderingen moet omzetten. De asynchrone contextmanagers sluiten sessie en antwoord wanneer hun blokken eindigen, ook bij een uitzondering.
Het total-budget van 15 seconden omvat de verzoekoperatie. Het connect-budget van 5 seconden telt ook het wachten op een beschikbare poolverbinding mee, zodat een drukke pool het kan verbruiken voordat een nieuwe socket opengaat. Dit verschil telt wanneer je de ene aanroep aanpast voor gelijktijdige controles.
trust_env=False houdt de getoonde route expliciet. aiohttp zoekt standaard niet naar proxyomgevingsvariabelen; er een exporteren in een andere terminal configureert deze aanroep niet. Kies trust_env=True alleen wanneer de geërfde procesomgeving het bedoelde routeringsbeleid is.