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.

Yo'l tekshiruvga tegishli bo'lsa, ushbu openerning o'z open usulini chaqiring. Misoldagi HTTP oxirgi nuqtasi xizmatingizdan yoki ommaviy tekshiruvlar uchun HTTP proksi ro'yxatidan kelishi mumkin. Parcha egalikni ko'rsatadi; u to'liq autentifikatsiya yoki salomatlik siyosatini belgilamaydi. Hisobga xos har qanday handler'ni ko'zda tutilgan klientga bog'langan holda saqlang.

urllib.request.install_opener() keyingi modul darajasidagi urlopen() chaqiruvlari ishlatadigan jarayon bo'yicha standartni o'zgartiradi. Shuning uchun proksilarni aylanib chiquvchi tekshirgich aloqasiz so'rovlarni o'zining oxirgi nuqtasida qoldirishi mumkin. Vaqtincha o'rnatish va tozalashda tiklash baribir umumiy o'zgarish vaqtida parallel so'rovlarning ishlashiga yo'l qo'yadi.

socket.setdefaulttimeout() xuddi shunday keyin yaratilgan socket'lar uchun standartlarni o'zgartiradi. Uni faqat tekshiruv olishi kerak bo'lganda operatsiya darajasidagi vaqt chegarasidan foydalaning.

Tekshiruv javoblarini yoping va natijalarni aniq saqlang: HTTP xato javobi avtomatik ravishda o'lik proksi tinglovchisi emas. Agar asinxron xizmatda sinxron urllib tekshiruvi ishlatilsa, bloklovchi ishni mos worker'ga ko'chiring; bu ijro qarori global opener o'zgarishini izolyatsiya qilmaydi.

Tekshiruv boshqa tarmoq siyosatini qoldirmasdan o'z kuzatuvini qaytarishi kerak. Uning o'z klient obyekti va cheklangan operatsiyasi bu chegarani aniq qiladi.

O'xshash maqolalar