Проксі 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 імпартаваны, а спіс канчатковых пунктаў ужо правераны. Публічны пул можа пачаць з бясплатнага спісу проксі, калі яго пратаколы падыходзяць канчатковаму кліенту; гэтае правіла выбару ўсё яшчэ кантралюе паўторы. Чакаць, паўторна выкарыстоўваць адзіны канчатковы пункт ці спыніцца — гэта палітыка праграмы. Несканчоны цыкл, які чакае іншага выпадковага значэння, не можа вырашыць спіс, які змяшчае толькі адзін розны варыянт.

У адначасовым дыспетчары выбар і запіс папярэдняга канчатковага пункта таксама патрабуюць узгодненага валодання. Інакш два працоўнікі могуць абодва выключыць старое значэнне і выбраць адно і тое ж наступнае значэнне.

Нарэшце, гэтае правіла датычыцца ідэнтычнасці канчатковага пункта. Два розныя канчатковыя пункты могуць весці да аднаго публічнага выхаду, а адзін пункт пастаўшчыка можа весці да некалькіх выхадаў. Запісвайце іх асобна, перш чым вырашыць, што ратацыя зламаная.

Падобныя артыкулы