Rastgele seçimler, karıştırılmış turlar ve tekrarlanan proxy uç noktaları
Tekrarlanan bir uç noktayı bozuk bir döndürücü olarak görmek yerine bağımsız rastgele seçimler, karıştırılmış bir tur ve hemen tekrarlamayan bir politika arasında seçim yapın.
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
| Gereksinim | Seçim kuralı |
|---|---|
| Her seçim bağımsızdır | Her seferinde uygun listeden seçin |
| Yeniden başlamadan önce her uç noktayı bir kez kullanın | Bir kopyayı karıştırın, tüketin, sonra yeni bir tura başlayın |
| Hemen önceki uç noktadan kaçının | Seç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.