Għal talba asinkronika waħda permezz ta’ proxy HTTP mingħajr awtentikazzjoni, żomm ir-rotta fuq session.get(). Żid aiohttp mal-proġett jekk meħtieġ:

uv add aiohttp

Ibdel l-indirizz tad-dokumentazzjoni hawn taħt bil-listener HTTP tiegħek jew kandidat mil-lista ta’ proxies HTTP. Irid jippermetti CONNECT lejn id-destinazzjoni HTTPS; endpoint li jappoġġja SOCKS biss jeħtieġ konnettur xieraq minflok dan l-argument 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())

It-talba tistampa l-istatus HTTP tagħha u l-ewwel 200 karattru tat-test tar-rispons. 403 jew 429 jibqa’ rispons li tista’ tispezzjona hawn; sejjaħ response.raise_for_status() jekk l-app għandha tbiddel status mhux ta’ suċċess f’eċċezzjonijiet. Il-maniġers tal-kuntest asinkroniċi jagħlqu s-sessjoni u r-rispons meta jispiċċaw il-blokki tagħhom, anki b’eċċezzjoni.

Il-baġit total ta’ 15-il sekonda jkopri l-operazzjoni tat-talba. Il-baġit connect ta’ 5 sekondi jinkludi l-istennija għal konnessjoni disponibbli fil-pool, għalhekk pool okkupat jista’ jużah qabel jinfetaħ socket ġdid. Id-distinzjoni hija importanti meta tadatta s-sejħa waħda għal kontrolli konkorrenti.

trust_env=False iżomm ir-rotta murija espliċita. aiohttp ma jiskoprix varjabbli tal-ambjent tal-proxy awtomatikament; l-esportazzjoni ta’ waħda f’terminal ieħor ma tikkonfigurax din is-sejħa. Agħżel trust_env=True biss meta l-ambjent li wiret il-proċess ikun il-politika tar-routing maħsuba.

Artikli relatati