Untuk kumpulan tetap, pemilihan round-robin boleh menjadi ringkas:

from itertools import cycle

choices = cycle([
    "http://proxy-a.example:8080",
    "http://proxy-b.example:8080",
    "http://proxy-c.example:8080",
])

endpoint = next(choices)

Gantikan URL contoh dengan titik akhir HTTP daripada perkhidmatan anda atau daripada senarai proksi HTTP. Panggilan berturut-turut mengembalikan A, B, C, kemudian A semula. Gunakan nilai yang dipilih semasa mengkonfigurasi permintaan berikutnya. Mencipta semula iterator untuk setiap permintaan akan memulakan semula jujukan. Untuk Requests, hantar titik akhir yang dipilih ke dalam permintaan.

Jika anda lebih suka senarai, alihkan item pertamanya ke belakang. pool.append(pool.pop()) mengeluarkan item terakhir dan meletakkannya semula serta-merta; item pertama tidak pernah berubah. Operasi baris gilir ialah pool.append(pool.pop(0)), walaupun mengeluarkan dari hadapan menggeser elemen senarai yang tinggal.

Iterator mempunyai tugas yang sengaja sederhana. Ia tidak menyemak ketersediaan, tidak mengeluarkan entri yang gagal dan tidak menjamin jalan keluar awam yang berbeza. Beberapa titik akhir boleh berkongsi satu alamat luar.

Kekalkan dasar cuba semula dan kemas kini kumpulan di luar pemilih kecil ini. Iterator yang dikongsi juga memerlukan model pemilikan yang disengajakan dalam kod serentak supaya titik akhir yang dipilih kekal terikat pada operasi yang menerimanya.

Artikel berkaitan