Escolmas aleatorias, pasadas mesturadas e puntos finais de proxy repetidos
Escolla entre escolmas aleatorias independentes, unha pasada mesturada e unha política sen repetición inmediata, en lugar de tratar un punto final repetido como un rotador avariado.
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
| Requisito | Regra de selección |
|---|---|
| Cada escolma é independente | Escolla da lista elixible cada vez |
| Use cada punto final unha vez antes de comezar de novo | Mesture unha copia, consúmaa e despois comece outra pasada |
| Evite o punto final inmediatamente anterior | Exclú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.