Proxy B, noch einmal Proxy B, dann Proxy A. Ihr Protokoll sieht verdächtig aus, aber eine Zufallsauswahl darf genau das tun.

Die Auswahl aus derselben Liste bei jeder Anfrage erlaubt Wiederholungen. Bei zwei gleich wahrscheinlichen Endpunkten hat die nächste unabhängige Auswahl eine Chance von eins zu zwei, mit der vorherigen übereinzustimmen. Eine kurze Folge mit Wiederholungen ist kein Beweis dafür, dass die Auswahl die Liste ignoriert hat.

Wählen Sie das Verhalten, das Sie tatsächlich brauchen

AnforderungAuswahlregel
Jede Auswahl ist unabhängigWählen Sie jedes Mal aus der zulässigen Liste
Nutzen Sie jeden Endpunkt einmal, bevor Sie neu beginnenMischen Sie eine Kopie, verbrauchen Sie sie, und beginnen Sie dann einen neuen Durchlauf
Vermeiden Sie den unmittelbar vorherigen EndpunktSchließen Sie diesen Endpunkt vor der Auswahl aus

Behandeln Sie für die letzte Richtlinie den Fall mit nur einem Endpunkt ausdrücklich:

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

Dieses Fragment setzt voraus, dass random importiert und die Endpunktliste bereits validiert ist. Ein öffentlicher Pool kann mit der kostenlosen Proxy-Liste beginnen, wenn seine Protokolle zum endgültigen Client passen; diese Auswahlregel steuert weiterhin Wiederholungen. Ob gewartet, der einzige Endpunkt wiederverwendet oder abgebrochen wird, ist eine Anwendungsrichtlinie. Eine Endlosschleife, die auf einen anderen Zufallswert wartet, kann eine Liste mit nur einer einzigen Auswahl nicht lösen.

In einem nebenläufigen Dispatcher erfordert die Auswahl und Aufzeichnung des vorherigen Endpunkts außerdem eine koordinierte Zuständigkeit. Sonst können zwei Arbeiter beide den alten Wert ausschließen und denselben nächsten Wert wählen.

Schließlich betrifft diese Regel die Identität des Endpunkts. Zwei verschiedene Endpunkte können zu einem öffentlichen Ausgang führen, und ein Anbieter-Endpunkt kann zu mehreren Ausgängen führen. Zeichnen Sie dies getrennt auf, bevor Sie entscheiden, dass die Rotation defekt ist.

Ähnliche Artikel