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.

Panggil kaedah open opener ini sendiri apabila laluan itu milik pemeriksaan. Titik akhir HTTP dalam contoh mungkin datang daripada perkhidmatan anda atau daripada senarai proksi HTTP untuk pemeriksaan awam. Serpihan ini menggambarkan pemilikan; ia tidak mentakrifkan dasar pengesahan atau kesihatan sepenuhnya. Kekalkan sebarang pengendali khusus akaun terikat pada klien yang dimaksudkan.

urllib.request.install_opener() mengubah lalai seluruh proses yang digunakan oleh panggilan urlopen() peringkat modul kemudian. Oleh itu pemeriksa yang menggeliling proksi boleh membiarkan permintaan tidak berkaitan menggunakan titik akhir terakhirnya. Pemasangan sementara dan pemulihan semasa pembersihan masih membenarkan permintaan serentak berjalan semasa mutasi dikongsi.

socket.setdefaulttimeout() juga mengubah lalai untuk socket yang dicipta kemudian. Gunakan tamat masa peringkat operasi apabila hanya pemeriksaan patut menerimanya.

Tutup respons pemeriksaan dan kekalkan hasilnya khusus: respons ralat HTTP bukan secara automatik pendengar proksi mati. Jika pemeriksaan urllib segerak digunakan dalam perkhidmatan tak segerak, pindahkan kerja yang menyekat kepada worker yang sesuai; keputusan pelaksanaan itu tidak menjadikan mutasi opener global terasing.

Pemeriksaan harus mengembalikan pemerhatiannya tanpa meninggalkan dasar rangkaian lain di belakang. Objek kliennya sendiri dan operasi terbatas menjadikan sempadan itu jelas.

Artikel berkaitan