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 aiohttp

Erstat 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.

Relaterede artikler