Comprobar unha lista de proxies con concorrencia limitada
Limita as comprobacións simultáneas de proxies e rexistra que estableceu realmente cada comprobación para o sitio obxectivo.
var options = new ParallelOptions
{
MaxDegreeOfParallelism = 8,
CancellationToken = cancellationToken
};
await Parallel.ForEachAsync(endpoints, options,
async (endpoint, token) =>
{
var result = await ProbeAsync(endpoint, target, token);
observations.Add(result);
});Usa un conxunto de traballadores limitado en lugar de lanzar unha tarefa por cada extremo. Para as comprobacións contra obxectivos públicos permitidos, a lista gratuíta de proxies fornece filas candidatas; conserva o protocolo de cada entrada ao construír a sonda. Este fragmento de planificación .NET supón un ProbeAsync consciente do proxy e un recolledor observations seguro para fíos. Oito é un límite ilustrativo, non un óptimo medido. A sonda aínda necesita límites por intento e cancelación de todo o traballo.
Conserva cada resultado completado xunto coa súa entrada aínda que a orde de finalización sexa distinta. Rexistra protocolo, extremo, obxectivo, método, tempo transcorrido e resultado. O fallo de conexión, o rexeitamento do inicio de sesión no proxy, un CONNECT denegado e unha resposta recibida do sitio son observacións diferentes.
Que se abra un porto TCP non demostra a negociación co proxy. Obter o enderezo do proxy como se fose un sitio web tamén difire de usalo para solicitar o obxectivo.
Escolle o obxectivo e o método segundo a capacidade requirida. HEAD pode aforrar tráfico de corpo, pero non demostra que GET devolva contido útil; un sitio pode rexeitar un e permitir o outro. HTTPS engade CONNECT e TLS de destino que non existen en HTTP simple. Un enderezo de saída é outra observación do lado do destino, separada da entrada configurada.
O traballo limitado evita que o comprobador esgote os seus propios sockets, memoria ou planificador antes de poder avaliar a ruta. Un resultado por etapas segue a ser útil para a política de selección sen finxir que un destino exitoso fai que un extremo sexa bo universalmente.