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 પસંદ કરો.