Pilihan rawak, hantaran diacak dan titik akhir proksi berulang
Pilih antara pilihan rawak bebas, hantaran diacak dan dasar tanpa pengulangan segera, daripada menganggap titik akhir berulang sebagai pemutar rosak.
Proksi B, proksi B lagi, kemudian proksi A. Log anda kelihatan mencurigakan, tetapi pemilih rawak dibenarkan berbuat demikian.
Memilih daripada senarai yang sama pada setiap permintaan membenarkan pengulangan. Dengan dua titik akhir yang sama kemungkinan, pemilihan bebas seterusnya mempunyai peluang satu dalam dua untuk sepadan dengan yang sebelumnya. Urutan pendek yang mengandungi pengulangan bukan bukti bahawa pemilih mengabaikan senarai itu.
Pilih tingkah laku yang anda benar-benar perlukan
| Keperluan | Peraturan pemilihan |
|---|---|
| Setiap pilihan adalah bebas | Pilih daripada senarai yang layak setiap kali |
| Gunakan setiap titik akhir sekali sebelum bermula semula | Kocok salinan, habiskan, kemudian mulakan hantaran lain |
| Elakkan titik akhir sebelumnya secara langsung | Kecualikan titik akhir itu sebelum memilih |
Untuk dasar terakhir, tangani kes satu titik akhir secara jelas:
candidates = [endpoint for endpoint in eligible if endpoint != previous]
if not candidates:
raise RuntimeError("No different eligible proxy is available")
selected = random.choice(candidates)
Serpihan ini menganggap random telah diimport dan senarai titik akhir sudah disahkan. Kolam awam boleh bermula dengan senarai proksi percuma apabila protokolnya sepadan dengan klien akhir; peraturan pemilihan ini masih mengawal pengulangan. Sama ada menunggu, menggunakan semula satu-satunya titik akhir atau berhenti ialah dasar aplikasi. Gelung tanpa henti yang menunggu nilai rawak berbeza tidak dapat menyelesaikan senarai yang hanya mengandungi satu pilihan berbeza.
Dalam penghantar serentak, memilih dan merekod titik akhir sebelumnya juga memerlukan pemilikan yang diselaraskan. Jika tidak, dua pekerja boleh kedua-duanya mengecualikan nilai lama dan memilih nilai seterusnya yang sama.
Akhirnya, peraturan ini berkaitan identiti titik akhir. Dua titik akhir berbeza boleh membawa kepada satu jalan keluar awam, dan satu titik akhir penyedia boleh membawa kepada beberapa jalan keluar. Rekodkan secara berasingan sebelum memutuskan putaran itu rosak.