Պրոքսի B, նորից պրոքսի B, ապա պրոքսի A։ Ձեր մատյանը կասկածելի է թվում, բայց պատահական ընտրիչին թույլատրվում է հենց դա անել։

Ամեն հարցման ժամանակ նույն ցանկից ընտրելը թույլ է տալիս կրկնություններ։ Երկու հավասարապես հավանական վերջնակետերի դեպքում հաջորդ անկախ ընտրությունը երկուսից մեկ հնարավորություն ունի համընկնելու նախորդի հետ։ Կրկնություններ պարունակող կարճ հաջորդականությունը ապացույց չէ, որ ընտրիչն անտեսել է ցանկը։

Ընտրեք այն վարքը, որն իրականում ձեզ պետք է

ՊահանջԸնտրության կանոն
Յուրաքանչյուր ընտրություն անկախ էԱմեն անգամ ընտրեք համապատասխան ցանկից
Օգտագործեք յուրաքանչյուր վերջնակետ մեկ անգամ՝ նորից սկսելուց առաջԽառնեք պատճենը, սպառեք այն, ապա սկսեք նոր անցում
Խուսափեք անմիջապես նախորդ վերջնակետիցԸնտրելուց առաջ բացառեք այդ վերջնակետը

Վերջին քաղաքականության համար հստակ զբաղվեք մեկ վերջնակետի դեպքով՝

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

Այս հատվածը ենթադրում է, որ random-ը ներմուծված է, և վերջնակետերի ցանկն արդեն ստուգված է։ Հանրային լողավազանը կարող է սկսել անվճար պրոքսի ցանկից, երբ դրա արձանագրությունները համապատասխանում են վերջնական հաճախորդին. այս ընտրության կանոնը դեռևս վերահսկում է կրկնությունները։ Սպասելը, միակ վերջնակետը կրկին օգտագործելը կամ կանգնելը հավելվածի քաղաքականություն է։ Անվերջ ցիկլը, որը սպասում է այլ պատահական արժեքի, չի կարող լուծել միայն մեկ տարբեր ընտրություն պարունակող ցանկը։

Զուգահեռ դիսպետչերում նախորդ վերջնակետի ընտրությունն ու գրանցումը նույնպես պահանջում են համաձայնեցված սեփականություն։ Հակառակ դեպքում երկու աշխատողներն էլ կարող են բացառել հին արժեքը և ընտրել նույն հաջորդ արժեքը։

Վերջապես, այս կանոնը վերաբերում է վերջնակետի ինքնությանը։ Երկու տարբեր վերջնակետեր կարող են տանել մեկ հանրային ելքի, և մեկ մատակարարի վերջնակետը կարող է տանել մի քանի ելքի։ Գրանցեք դրանք առանձին, նախքան որոշելը, որ ռոտացիան խափանված է։

Առնչվող հոդվածներ