Чакан urllib3 прокси диагностикасы үчүн кайра аракеттери өчүрүлгөн ProxyManager колдонуңуз. Бул иштебей калган жазууну узак кайталоонун ордуна биринчи аракетти көрсөтөт. uv башкарган долбоордо:

uv add urllib3

Документтеги акыркы чекитти кызматыңыздагы же HTTP проксилердин тизмесиндеги HTTP прокси менен алмаштырып, суроону ошол башкаргыч аркылуу аткарыңыз:

import urllib3

proxy = urllib3.ProxyManager(
    "http://203.0.113.10:8080",
    timeout=urllib3.Timeout(connect=5, read=10),
    retries=False,
)

try:
    response = proxy.request("GET", "https://example.com/")
    print(response.status)
    print(response.data.decode("utf-8", errors="replace")[:200])
finally:
    proxy.clear()

Адегенде response.status окуп, анан response.data караңыз. Булар urllib3 талаалары; Requests стилиндеги status_code менен text аларды алмаштырбайт. Сайттын баш тартуусу иштеген прокси аркылуу келиши мүмкүн. Ал эми жоопко чейинки өзгөчөлүк суроо бүтпөгөнүн билдирет.

retries=False — диагностикалык тандоо, өндүрүш чөйрөсүнүн кайра аракет саясаты эмес. Туташуудагы 5 секунд жана окуудагы 10 секунд өз баскычтарын чектейт; алар кепилденген жалпы 15 секунддук мөөнөт бербейт. DNS жана жооптун жүрүшү жалпы күтүүгө таасир этет.

Мисал денени алдын ала жүктөп, аягында башкаргычтын байланыш топторун тазалайт. Ошол чекит аркылуу кайталанган суроолордо байланыш кайра колдонулушу үчүн башкаргычты иш бүткүчө сактаңыз. preload_content=False режимине өтүү жашоо циклин өзгөртөт: чакыруучу агымдык жоопту окуп, бошотушу керек.

Башкаргычты угуп турган кызматка ылайык тандаңыз. Кадимки PoolManager URL башка жерде сакталганы үчүн прокси колдонгон болуп калбайт; SOCKS urllib3.contrib.socks.SOCKSProxyManager жана анын кошумча көз карандылыктарын колдонот. Жогорудагы код HTTP ProxyManager жолу менен жүрөт.

Тектеш макалалар