HTTP ପ୍ରକ୍ସି ଦେଇ ଗୋଟିଏ aiohttp ଅନୁରୋଧ
aiohttp ରେ ବିନା ପ୍ରମାଣୀକରଣ HTTP ପ୍ରକ୍ସି ଅନୁରୋଧ କରି ସ୍ଥିତି ଦେଖନ୍ତୁ ଓ ସ୍ପଷ୍ଟ ଅସିଙ୍କ୍ରୋନସ୍ ଜୀବନଚକ୍ରରେ ସରାନ୍ତୁ।
ବିନା ପ୍ରମାଣୀକରଣ 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 ବାଛନ୍ତୁ।