HTTP പ്രോക്സിയിലൂടെ ഒരു aiohttp അഭ്യർത്ഥന
പ്രാമാണീകരണമില്ലാത്ത HTTP പ്രോക്സിയിലൂടെ aiohttp അഭ്യർത്ഥന അയച്ച് നില പരിശോധിച്ച് വ്യക്തമായ അസിങ്ക്രണസ് ജീവിതചക്രത്തിൽ പൂർത്തിയാക്കുക.
പ്രാമാണീകരണമില്ലാത്ത HTTP പ്രോക്സിയിലൂടെ ഒരു അസിങ്ക്രണസ് അഭ്യർത്ഥനയ്ക്ക് പാത session.get()-ൽ വയ്ക്കുക. ആവശ്യമെങ്കിൽ പദ്ധതിയിൽ aiohttp ചേർക്കുക:
uv add aiohttpതാഴെയുള്ള രേഖാ വിലാസം നിങ്ങളുടെ HTTP ലിസനറോ HTTP പ്രോക്സി പട്ടികയിലെ സ്ഥാനാർഥിയോ ഉപയോഗിച്ച് മാറ്റുക. അത് HTTPS ലക്ഷ്യത്തിലേക്കുള്ള CONNECT അനുവദിക്കണം; SOCKS മാത്രം പിന്തുണയ്ക്കുന്ന എൻഡ്പോയിന്റിന് ഈ 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())
അഭ്യർത്ഥന HTTP നിലയും പ്രതികരണവാചകത്തിലെ ആദ്യ 200 അക്ഷരങ്ങളും കാണിക്കുന്നു. 403 അല്ലെങ്കിൽ 429 ഇവിടെയും പരിശോധിക്കാവുന്ന പ്രതികരണമാണ്; പരാജയനിലകളെ എക്സെപ്ഷനാക്കണമെങ്കിൽ response.raise_for_status() വിളിക്കുക. അസിങ്ക്രണസ് കോൺടെക്സ്റ്റ് മാനേജർമാർ ബ്ലോക്ക് അവസാനിക്കുമ്പോൾ സെഷനും പ്രതികരണവും അടയ്ക്കുന്നു, എക്സെപ്ഷൻ വന്നാലും.
15 സെക്കൻഡിന്റെ total ബജറ്റ് അഭ്യർത്ഥനാ പ്രവർത്തനത്തെ ഉൾക്കൊള്ളുന്നു. 5 സെക്കൻഡിന്റെ connect ബജറ്റിൽ പൂളിലെ ലഭ്യമായ കണക്ഷനായി കാത്തിരിപ്പും ഉൾപ്പെടുന്നു; അതിനാൽ തിരക്കുള്ള പൂൾ പുതിയ സോക്കറ്റ് തുറക്കുന്നതിനു മുമ്പേ അത് തീർക്കാം. ഒറ്റ കോളിനെ സമകാലിക പരിശോധനകളാക്കുമ്പോൾ ഈ വ്യത്യാസം പ്രധാനമാണ്.
trust_env=False കാണിച്ച പാത വ്യക്തമായി നിലനിർത്തുന്നു. aiohttp ഡിഫോൾട്ടായി പ്രോക്സി പരിസ്ഥിതി വേരിയബിളുകൾ കണ്ടെത്തുന്നില്ല; മറ്റൊരു ടെർമിനലിൽ ഒന്ന് എക്സ്പോർട്ട് ചെയ്താൽ ഈ കോൾ ക്രമീകരിക്കപ്പെടില്ല. പ്രോസസ് പാരമ്പര്യമായി സ്വീകരിച്ച പരിസ്ഥിതി ഉദ്ദേശിച്ച റൂട്ടിങ് നയമായിരിക്കുമ്പോൾ മാത്രം trust_env=True തിരഞ്ഞെടുക്കുക.