Proxy B, proxy B outra vez e despois proxy A. O seu rexistro parece sospeitoso, pero un selector aleatorio ten permiso para facer exactamente iso.

Escoller da mesma lista en cada solicitude permite repeticións. Con dous puntos finais igualmente probables, a seguinte selección independente ten unha probabilidade dunha entre dúas de coincidir coa anterior. Unha serie curta con repeticións non demostra que o selector ignorase a lista.

Escolla o comportamento que realmente necesita

RequisitoRegra de selección
Cada escolma é independenteEscolla da lista elixible cada vez
Use cada punto final unha vez antes de comezar de novoMesture unha copia, consúmaa e despois comece outra pasada
Evite o punto final inmediatamente anteriorExclúa ese punto final antes de escoller

Para a última política, trate explicitamente o caso dun só punto final:

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

Este fragmento supón que random está importado e que a lista de puntos finais xa está validada. Un conxunto público pode comezar coa lista gratuíta de proxies cando os seus protocolos encaixan co cliente final; esta regra de selección segue a controlar as repeticións. Se cómpre esperar, reutilizar o único punto final ou deter o proceso é unha política da aplicación. Un bucle sen fin que agarda un valor aleatorio distinto non pode resolver unha lista que só contén unha opción distinta.

Nun despachador concorrente, seleccionar e rexistrar o punto final anterior tamén require unha propiedade coordinada. Se non, dous traballadores poden excluír ambos o valor antigo e escoller o mesmo valor seguinte.

Por último, esta regra refírese á identidade do punto final. Dous puntos finais distintos poden levar a unha mesma saída pública, e un punto final de provedor pode levar a varias saídas. Rexístreos por separado antes de decidir que a rotación está avariada.

Artigos relacionados