Вибір маршрутів проксі в 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) перевизначає тайм-аут підключення і надає іншим налаштованим складникам типове значення. Читання, запис і очікування пулу мають окремі межі; п’ятнадцять секунд — не загальна межа фактичної тривалості. Тайм-аут пулу може означати, що інша робота утримує доступні з’єднання. Правильно закривайте клієнти й потокові відповіді, перш ніж вважати це доказом недосяжності проксі.