Een aiohttp-versoek deur ’n HTTP-proxy
Stuur ’n aiohttp-versoek deur ’n HTTP-proxy sonder stawing, ondersoek die status en voltooi dit binne ’n uitdruklike asinkrone lewensiklus.
Vir een asinkrone versoek deur ’n HTTP-proxy sonder stawing, hou die roete op session.get(). Voeg aiohttp by die projek indien nodig:
uv add aiohttpVervang die dokumentasieadres hieronder met jou HTTP-luisterpunt of ’n kandidaat uit die HTTP-instaanbedienerlys. Dit moet CONNECT na die HTTPS-bestemming toelaat; ’n eindpunt wat net SOCKS ondersteun, het ’n geskikte koppelaar nodig in plaas van hierdie 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())
Die versoek vertoon sy HTTP-status en die eerste 200 karakters van die antwoordteks. ’n 403 of 429 bly hier ’n antwoord wat jy kan ondersoek; roep response.raise_for_status() aan as jou toepassing onsuksesvolle statusse in uitsonderings moet verander. Die asinkrone konteksbestuurders sluit die sessie en antwoord wanneer hul blokke eindig, ook by ’n uitsondering.
Die 15-sekonde-total-begroting dek die versoekbewerking. Die 5-sekonde-connect-begroting sluit wag op ’n beskikbare verbinding uit die poel in, dus kan ’n besige poel die tyd verbruik voordat ’n nuwe sok oopmaak. Dié onderskeid maak saak wanneer jy die enkele oproep na gelyktydige kontroles aanpas.
trust_env=False hou die gewysde roete uitdruklik. aiohttp spoor nie by verstek proxy-omgewingsveranderlikes op nie; om een in ’n ander terminaal te eksporteer, stel nie hierdie oproep op nie. Kies trust_env=True slegs wanneer die proses se geërfde omgewing die bedoelde roetebeleid is.