પ્રમાણીકરણ વગરના 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 પસંદ કરો.

સંબંધિત લેખો