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);
    });

Përdorni një grup punëtorësh të kufizuar në vend të nisjes së një detyre për çdo pikë fundore. Për kontrollimet ndaj objektivave publikë të lejuar, lista falas e proxy-ve ofron rreshta kandidatësh; ruani protokollin e çdo hyrjeje kur ndërtoni sondën. Ky fragment planifikimi .NET supozon një ProbeAsync që njeh proxy-n dhe një grumbullues observations të sigurt për fijet. Tetë është një kufi ilustrues, jo një optimum i matur. Sonda ende ka nevojë për kufizime për çdo provë dhe anulim të të gjithë punës.

Ruani çdo rezultat të përfunduar bashkë me hyrjen e tij edhe kur rendi i përfundimit është i ndryshëm. Regjistroni protokollin, pikën fundore, objektivin, metodën, kohën e kaluar dhe rezultatin. Dështimi i lidhjes, refuzimi i hyrjes në proxy, CONNECT i refuzuar dhe një përgjigje e marrë nga sajti janë vëzhgime të ndryshme.

Hapja e një porte TCP nuk vërteton negocimin me proxy-n. Marrja e adresës së proxy-s si sajt është gjithashtu ndryshe nga përdorimi i saj për të kërkuar objektivin.

Zgjidhni objektivin dhe metodën sipas aftësisë së kërkuar. HEAD mund të kursejë trafikun e trupit, por nuk vërteton që GET kthen përmbajtje të dobishme; një sajt mund të refuzojë njërën dhe të lejojë tjetrën. HTTPS shton CONNECT dhe TLS-in e destinacionit që mungojnë në HTTP të thjeshtë. Një adresë dalëse është një vëzhgim tjetër nga ana e destinacionit, i ndarë nga hyrja e konfiguruar.

Puna e kufizuar e pengon kontrolluesin të shterojë sockets, memorjen ose planifikuesin e vet përpara se të vlerësojë rrugën. Një rezultat i shkallëzuar mbetet i dobishëm për politikën e përzgjedhjes pa pretenduar se një destinacion i suksesshëm e bën një pikë fundore universalisht të mirë.

Artikuj të ngjashëm