Клиент сұрауларын бір соңғы нүкте өңдеуі керек болса proxy= пайдаланыңыз. Мақсат схемаларына түрлі бағыт қажет болса mounts= пайдаланыңыз. Мысалдар осы HTTPX интерфейстерін қолданады; ескі proxies= API-і бар жобаға өз нұсқасына сай баптау керек.

Бір соңғы нүкте

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)

Тіркеу кілттері мақсатты URL-дерге сәйкес келеді. HTTP мақсаттары мұнда 8080 портын, HTTPS мақсаттары 8081 портын таңдайды. Прокси мәні тыңдаушының өз протоколын сипаттайды, сондықтан HTTPS тіркеуінде http:// прокси дұрыс тұра алады. Өз нүктелеріңізді қойып, екі мақсат схемасын да тексеріңіз.

Екі тәсіл клиентте және берілген transport-тарда trust_env=False орнатады. Әйтпесе HTTPX әдепкіде прокси мен сертификат орта айнымалыларын оқиды. Орнатуыңыз соларға сүйенсе, анықтауды қосулы қалдырыңыз немесе бағыттар мен сенімді айқын баптаңыз. Жеке сенім үшін HTTPX нұсқаңыз қолдайтын TLS контексті мен CA баптауын пайдаланыңыз; мақсат тексеруін өшірмеңіз. HTTPS прокси сенімі мақсат сенімінен бөлек болуы мүмкін.

httpx.Timeout(15.0, connect=5.0) қосылу уақыт шегін ауыстырып, басқа бапталған құрамдастарға әдепкі мән береді. Оқу, жазу және pool күтуінің шектері бөлек; он бес секунд — нақты өткен уақыттың жалпы шегі емес. Pool тайм-ауты басқа жұмыстың қолжетімді қосылымдарды ұстап тұрғанын білдіруі мүмкін. Мұны прокси қолжетімсіздігінің дәлелі санамас бұрын клиенттер мен ағындық жауаптарды дұрыс жабыңыз.

Қатысты мақалалар