Proxy B, yine proxy B, sonra proxy A. Günlüğünüz şüpheli görünüyor, ancak rastgele bir seçici tam olarak bunu yapabilir.

Her istekte aynı listeden seçim yapmak tekrarlara izin verir. Eşit olasılıklı iki uç nokta varsa, bir sonraki bağımsız seçimin öncekiyle eşleşme şansı ikide birdir. Tekrar içeren kısa bir dizi, seçicinin listeyi görmezden geldiğinin kanıtı değildir.

Gerçekten ihtiyacınız olan davranışı seçin

GereksinimSeçim kuralı
Her seçim bağımsızdırHer seferinde uygun listeden seçin
Yeniden başlamadan önce her uç noktayı bir kez kullanınBir kopyayı karıştırın, tüketin, sonra yeni bir tura başlayın
Hemen önceki uç noktadan kaçınınSeçim yapmadan önce o uç noktayı hariç tutun

Son politika için tek uç nokta durumunu açıkça ele alın:

candidates = [endpoint for endpoint in eligible if endpoint != previous]
if not candidates:
    raise RuntimeError("No different eligible proxy is available")
selected = random.choice(candidates)

Bu parça random modülünün içe aktarıldığını ve uç nokta listesinin zaten doğrulandığını varsayar. Ortak bir havuz, protokolleri son istemciye uyduğunda ücretsiz proxy listesi ile başlayabilir; bu seçim kuralı tekrarları yine de kontrol eder. Beklemek, tek uç noktayı yeniden kullanmak veya durmak bir uygulama politikasıdır. Farklı bir rastgele değeri bekleyen sonsuz döngü, yalnızca tek bir farklı seçenek içeren bir listeyi çözemez.

Eşzamanlı bir dağıtıcıda, önceki uç noktayı seçmek ve kaydetmek de koordineli sahiplik gerektirir. Aksi halde iki çalışan da eski değeri hariç tutup aynı sonraki değeri seçebilir.

Son olarak, bu kural uç noktanın kimliğiyle ilgilidir. İki farklı uç nokta tek bir ortak çıkışa yol açabilir ve bir sağlayıcı uç noktası birkaç çıkışa yol açabilir. Döndürmenin bozuk olduğuna karar vermeden önce bunları ayrı ayrı kaydedin.

İlgili makaleler