Выбар маршрутаў проксі ў HTTPX праз proxy і mounts
Выкарыстоўвайце proxy і транспартныя mounts HTTPX з правільнай схемай, яўнымі паводзінамі асяроддзя і асобнымі межамі злучэння і чытання.
Выкарыстоўвайце 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) перавызначае час чакання злучэння і дае астатнім настроеным кампанентам стандартнае значэнне. Чытанне, запіс і чаканне пула маюць асобныя межы; пятнаццаць секунд — не агульны ліміт фактычнага часу. Збой чакання пула можа азначаць, што іншая праца трымае даступныя злучэнні. Правільна закрывайце кліенты і струменевыя адказы, перш чым лічыць гэта доказам недасяжнасці проксі.