Vienai asinchroninei užklausai per HTTP tarpinį serverį be autentifikavimo maršrutą laikykite ties session.get(). Jei reikia, pridėkite aiohttp į projektą:

uv add aiohttp

Toliau pateiktą dokumentacijos adresą pakeiskite savo HTTP klausymo tašku arba kandidatu iš HTTP tarpinių serverių sąrašo. Jis turi leisti CONNECT į HTTPS paskirties vietą; tik SOCKS palaikančiam galiniam taškui reikia tinkamo konektoriaus vietoje šio proxy argumento.

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())

Užklausa išveda HTTP būseną ir pirmus 200 atsako teksto simbolių. 403 arba 429 čia lieka atsakas, kurį galima peržiūrėti; kvieskite response.raise_for_status(), jei programa turi nesėkmingas būsenas paversti išimtimis. Asinchroniniai konteksto valdikliai uždaro sesiją ir atsaką pasibaigus jų blokams, taip pat išimties atveju.

15 sekundžių total biudžetas apima užklausos operaciją. 5 sekundžių connect biudžetas apima laukimą, kol telkinyje atsiras laisvas ryšys, todėl užimtas telkinys gali jį išnaudoti dar neatidarius naujo lizdo. Tai svarbu vieną kvietimą pritaikant lygiagrečioms patikroms.

trust_env=False išlaiko parodytą maršrutą aiškų. aiohttp pagal numatytąją nuostatą neaptinka tarpinio serverio aplinkos kintamųjų; kintamojo eksportavimas kitame terminale šio kvietimo nenustatys. trust_env=True rinkitės tik tada, kai proceso paveldėta aplinka yra numatyta maršrutizavimo politika.

Susiję straipsniai