from urllib.request import ProxyHandler, build_opener

def make_proxy_opener(proxy_uri):
    return build_opener(ProxyHandler({
        "http": proxy_uri,
        "https": proxy_uri,
    }))

opener = make_proxy_opener("http://proxy.example.net:8080")
# Use opener.open(destination, timeout=10) for this route.

Bir yol kontrole aitse bu opener'ın kendi open yöntemini çağırın. Örnekteki HTTP uç noktası hizmetinizden veya genel kontroller için HTTP proxy listesinden gelebilir. Parça sahipliği gösterir; tam kimlik doğrulama veya sağlık politikasını tanımlamaz. Hesaba özgü herhangi bir handler'ı amaçlanan istemciye bağlı tutun.

urllib.request.install_opener() sonraki modül düzeyi urlopen() çağrılarının kullandığı süreç geneli varsayılanı değiştirir. Bu nedenle proxy'ler arasında dolaşan bir denetleyici ilgisiz istekleri son uç noktasıyla bırakabilir. Geçici olarak kurmak ve temizlikte geri yüklemek, paylaşılan değişiklik sırasında eşzamanlı isteklerin yine de çalışmasına izin verir.

socket.setdefaulttimeout() benzer şekilde sonradan oluşturulan socket'lerin varsayılanlarını değiştirir. Yalnızca kontrolün alması gerektiğinde işlem düzeyi zaman aşımını kullanın.

Kontrol yanıtlarını kapatın ve sonuçları belirgin tutun: bir HTTP hata yanıtı otomatik olarak ölü bir proxy dinleyicisi değildir. Eşzamanlı olmayan bir hizmette eşzamanlı urllib kontrolü kullanılıyorsa, engelleyen işi uygun bir worker'a taşıyın; bu yürütme kararı genel opener değişikliğini yalıtılmış yapmaz.

Bir kontrol, başka bir ağ politikası bırakmadan gözlemini döndürmelidir. Kendi istemci nesnesi ve sınırlı işlem bu sınırı açık hale getirir.

İlgili makaleler