HTTPX’te proxy ve mounts ile proxy rotası seçmek
HTTPX proxy ve taşıma bağlamalarını doğru şema, açık ortam davranışı ve ayrı bağlantı/okuma süreleriyle kullanın.
Tek uç nokta istemcinin isteklerini işleyecekse proxy= kullanın. Hedef şemaları farklı rotalar gerektiriyorsa mounts= kullanın. Örnekler bu HTTPX arayüzlerini kullanır; eski proxies= API’sini kullanan proje, sürümüne uygun yapılandırma ister.
Tek uç nokta
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)
Yerel dinleyiciyi çalışan bir HTTP proxy ile değiştirin. HTTP proxy listesinden seçilen adayın hedefinizle yine sınanması gerekir. HTTPS hedefi bu http:// uç noktasını CONNECT üzerinden kullanabilir. Şemayı https:// yapmak ise proxy’nin kendisine TLS ister; bunu hem dinleyici hem istemci desteklemelidir.
Hedef şemasına göre ayrı rotalar
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)
Bağlama anahtarları hedef URL’lerle eşleşir. HTTP hedefleri burada 8080, HTTPS hedefleri 8081 portunu seçer. Proxy değeri dinleyicinin kendi protokolünü tanımlar; dolayısıyla HTTPS bağlaması doğru biçimde http:// proxy içerebilir. Kendi uç noktalarınızı koyup iki hedef şemasını da kontrol edin.
İki tarif de istemcide ve verildiği yerde taşımalarda trust_env=False ayarlar. Aksi halde HTTPX proxy ve sertifika ortam değişkenlerini varsayılan olarak okur. Dağıtımınız bunlara dayanıyorsa keşfi açık tutun ya da gerekli rota ve güveni açıkça yapılandırın. Özel güven için HTTPX sürümünüzün desteklediği TLS bağlamı ve CA ayarını kullanın; hedef doğrulamasını açık bırakın. HTTPS proxy güveni hedef güveninden ayrı olabilir.
httpx.Timeout(15.0, connect=5.0) bağlantı zaman aşımını geçersiz kılar ve diğer yapılandırılmış bileşenlere varsayılan değeri verir. Okuma, yazma ve havuz bekleme ayrı sınırlara sahiptir; on beş saniye geçen gerçek sürenin toplam sınırı değildir. Havuz zaman aşımı, başka işlerin kullanılabilir bağlantıları tuttuğu anlamına gelebilir. Bunu erişilemeyen proxy kanıtı saymadan önce istemcileri ve akış yanıtlarını doğru kapatın.