from urllib.request import ProxyHandler, build_opener

def make_proxy_opener(proxy_uri):
    return build_opener(ProxyHandler({
        "http": proxy_uri,
        "https": proxy_uri,
    }))

opener = make_proxy_opener("http://proxy.example.net:8080")
# Use opener.open(destination, timeout=10) for this route.

જ્યારે માર્ગ તપાસનો હોય ત્યારે આ openerની પોતાની open પદ્ધતિને કૉલ કરો. ઉદાહરણનું HTTP એન્ડપોઈન્ટ તમારી સેવા અથવા જાહેર તપાસ માટે HTTP પ્રોક્સી સૂચિમાંથી આવી શકે છે. આ ટુકડો માલિકી દર્શાવે છે; તે સંપૂર્ણ પ્રમાણીકરણ કે આરોગ્ય નીતિ નક્કી કરતું નથી. એકાઉન્ટ-વિશિષ્ટ કોઈપણ handler તે ઇચ્છિત ક્લાયન્ટ સાથે જોડાયેલા રાખો.

urllib.request.install_opener() પ્રક્રિયા-વ્યાપી ડિફોલ્ટ બદલે છે જે પછીના મોડ્યુલ-સ્તરના urlopen() કૉલ્સ વાપરે છે. તેથી પ્રોક્સીમાં ફરતો ચેકર અસંબંધિત વિનંતીઓને તેના છેલ્લા એન્ડપોઈન્ટ સાથે છોડી શકે છે. હંગામી રીતે ઇન્સ્ટોલ કરીને સફાઈ વખતે પુનઃસ્થાપિત કરવાથી પણ વહેંચાયેલા ફેરફાર દરમિયાન સમવર્તી વિનંતીઓ ચાલી શકે છે.

socket.setdefaulttimeout() એ જ રીતે પછીથી બનાવેલા socket માટેના ડિફોલ્ટ બદલે છે. જ્યારે ફક્ત તપાસને જ તે મળવું જોઈએ ત્યારે ઓપરેશન-સ્તરનો ટાઈમઆઉટ વાપરો.

તપાસના પ્રતિભાવો બંધ કરો અને પરિણામો ચોક્કસ રાખો: HTTP ભૂલ પ્રતિભાવ આપમેળે મૃત પ્રોક્સી શ્રોતા નથી. જો async સેવામાં synchronous urllib તપાસ વપરાય, તો અવરોધક કામ યોગ્ય worker પર ખસેડો; તે અમલ નિર્ણય વૈશ્વિક opener ફેરફારને અલગ નથી કરતો.

તપાસે બીજી નેટવર્ક નીતિ પાછળ ન છોડીને તેનું અવલોકન પરત આપવું જોઈએ. તેનું પોતાનું ક્લાયન્ટ ઑબ્જેક્ટ અને મર્યાદિત કામગીરી તે સીમા સ્પષ્ટ કરે છે.

સંબંધિત લેખો