Én aiohttp-anmodning gennem en HTTP-proxy
Send en aiohttp-anmodning gennem en HTTP-proxy uden godkendelse, undersøg status, og afslut inden for en eksplicit asynkron livscyklus.
Til én asynkron anmodning gennem en HTTP-proxy uden godkendelse skal du holde ruten på session.get(). Føj om nødvendigt aiohttp til projektet:
uv add aiohttpErstat dokumentationsadressen nedenfor med dit HTTP-lyttepunkt eller en kandidat fra listen over HTTP-proxyer. Den skal tillade CONNECT til HTTPS-destinationen; et endepunkt, der kun understøtter SOCKS, kræver en passende connector i stedet for dette 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())
Anmodningen udskriver sin HTTP-status og de første 200 tegn af svarteksten. Et 403 eller 429 er stadig et svar, du kan undersøge her; kald response.raise_for_status(), hvis applikationen skal gøre mislykkede statusser til undtagelser. De asynkrone kontekstadministratorer lukker session og svar, når blokkene afsluttes, også ved en undtagelse.
Det 15-sekunders total-budget dækker anmodningsoperationen. Det 5-sekunders connect-budget inkluderer ventetid på en ledig forbindelse i puljen, så en travl pulje kan opbruge det, før en ny socket åbnes. Forskellen er vigtig, når det enkelte kald tilpasses samtidige kontroller.
trust_env=False gør den viste rute eksplicit. aiohttp finder ikke proxy-miljøvariabler som standard; eksport af en variabel i en anden terminal konfigurerer ikke dette kald. Vælg kun trust_env=True, når processens nedarvede miljø er den tilsigtede routingpolitik.