Выкарыстоўвайце proxy=, калі адзін канцавы пункт павінен абслугоўваць запыты кліента. Выкарыстоўвайце mounts=, калі схемам мэтавых URL патрэбны розныя маршруты. Прыклады выкарыстоўваюць гэтыя інтэрфейсы HTTPX; праекту са старым API proxies= патрэбна канфігурацыя для сваёй версіі.

Адзін канцавы пункт

import httpx

timeout = httpx.Timeout(15.0, connect=5.0)

with httpx.Client(
    proxy="http://127.0.0.1:8080",
    trust_env=False,
    timeout=timeout,
) as client:
    response = client.get("https://example.com/")
    response.raise_for_status()
    print(response.status_code)

Замяніце лакальны адрас праслухоўвання працоўным HTTP-проксі. Кандыдата са спіса HTTP-проксі ўсё роўна трэба праверыць з вашай мэтай. HTTPS-мэта можа выкарыстоўваць гэты пункт http:// праз CONNECT. Змена схемы на https:// запытвае TLS да самога проксі, што павінны падтрымліваць кліент і слухач.

Асобныя маршруты паводле схемы мэты

import httpx

mounts = {
    "http://": httpx.HTTPTransport(
        proxy="http://127.0.0.1:8080",
        trust_env=False,
    ),
    "https://": httpx.HTTPTransport(
        proxy="http://127.0.0.1:8081",
        trust_env=False,
    ),
}

with httpx.Client(
    mounts=mounts,
    trust_env=False,
    timeout=httpx.Timeout(15.0, connect=5.0),
) as client:
    response = client.get("https://example.com/")
    response.raise_for_status()
    print(response.status_code)

Ключы mounts супастаўляюцца з мэтавымі URL. HTTP-мэты тут выбіраюць порт 8080, а HTTPS-мэты — 8081. Значэнне proxy апісвае уласны пратакол слухача, таму mount для HTTPS можа правільна ўтрымліваць проксі http://. Падстаўце свае пункты і праверце абедзве схемы мэт.

Абодва варыянты задаюць trust_env=False на кліенце і, дзе яны перададзены, на транспартах. Інакш HTTPX стандартна чытае зменныя асяроддзя проксі і сертыфікатаў. Калі разгортванне ад іх залежыць, пакіньце выяўленне ўключаным або яўна задайце патрэбныя маршруты і давер. Для прыватнага даверу выкарыстоўвайце TLS-кантэкст і CA-канфігурацыю сваёй версіі HTTPX; праверка мэты мусіць застацца ўключанай. Давер да HTTPS-проксі можа быць асобны ад даверу да мэты.

httpx.Timeout(15.0, connect=5.0) перавызначае час чакання злучэння і дае астатнім настроеным кампанентам стандартнае значэнне. Чытанне, запіс і чаканне пула маюць асобныя межы; пятнаццаць секунд — не агульны ліміт фактычнага часу. Збой чакання пула можа азначаць, што іншая праца трымае даступныя злучэнні. Правільна закрывайце кліенты і струменевыя адказы, перш чым лічыць гэта доказам недасяжнасці проксі.

Падобныя артыкулы