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

Користите ограничени скуп радника уместо покретања засебног задатка за сваку крајњу тачку. За провере према дозвољеним јавним циљевима бесплатна листа проксија даје редове кандидата; при изради сонде сачувајте протокол сваког уноса. Овај .NET фрагмент заказивања претпоставља ProbeAsync који познаје прокси и сакупљач observations безбедан за нити. Осам је илустративна граница, а не измерени оптимум. Сонда и даље тражи ограничења по покушају и отказивање целог посла.

Чувајте сваки завршени резултат уз његов улаз чак и када се редослед завршетка разликује. Бележите протокол, крајњу тачку, циљ, метод, протекло време и исход. Неуспех везе, одбијање пријаве на прокси, одбијен CONNECT и примљен одговор сајта различита су запажања.

Отворен TCP порт не доказује преговарање са проксијем. Добављање адресе проксија као сајта такође се разликује од њене употребе за захтев према циљу.

Изаберите циљ и метод према траженој могућности. HEAD може уштедети саобраћај тела, али не доказује да GET враћа користан садржај; сајт може одбити једно и допустити друго. HTTPS додаје CONNECT и TLS одредишта којих нема у обичном HTTP-у. Адреса излаза је још једно запажање на страни одредишта, одвојено од подешеног улаза.

Ограничен рад спречава проверавача да исцрпи сопствене сокете, меморију или распоређивач пре него што оцени путању. Етапни резултат остаје користан за политику избора без претварања да једно успешно одредиште чини крајњу тачку универзално добром.

Повезани чланци