Një kërkesë aiohttp përmes një proxy HTTP
Dërgoni një kërkesë aiohttp përmes proxy HTTP pa autentikim, kontrolloni statusin dhe përfundoni në një cikël jetësor asinkron të qartë.
Për një kërkesë asinkrone përmes proxy HTTP pa autentikim, mbajeni rrugën te session.get(). Shtoni aiohttp në projekt nëse duhet:
uv add aiohttpZëvendësoni adresën e dokumentacionit më poshtë me pikën tuaj të dëgjimit HTTP ose një kandidat nga lista e proxy-ve HTTP. Duhet të lejojë CONNECT drejt destinacionit HTTPS; një pikë vetëm për SOCKS kërkon lidhës të përshtatshëm në vend të këtij argumenti 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())
Kërkesa afishon statusin HTTP dhe 200 karakteret e para të tekstit të përgjigjes. Një 403 ose 429 mbetet këtu përgjigje e kontrollueshme; thirrni response.raise_for_status() nëse aplikacioni duhet t’i kthejë statuset e pasuksesshme në përjashtime. Menaxherët e kontekstit asinkron mbyllin sesionin dhe përgjigjen kur përfundojnë blloqet e tyre, edhe në përjashtim.
Buxheti total prej 15 sekondash mbulon operacionin e kërkesës. Buxheti connect prej 5 sekondash përfshin pritjen e një lidhjeje të lirë në grup, ndaj grupi i zënë mund ta shpenzojë para hapjes së një socket-i të ri. Dallimi ka rëndësi kur thirrja e vetme përshtatet për kontrolle të njëkohshme.
trust_env=False e mban rrugën e treguar të qartë. aiohttp nuk i zbulon si parazgjedhje variablat e mjedisit proxy; eksportimi i njërës në terminal tjetër nuk e konfiguron këtë thirrje. Zgjidhni trust_env=True vetëm kur mjedisi i trashëguar i procesit është politika e synuar e rutimit.