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 தேர்ந்தெடுக்கவும்.