Radzhab
@Radzhab

Как организовать работу с прокси в Parallel.For?

Есть 5 прокси. Запрос с каждого прокси можно делать не более раза за 2 секунды. Есть список id. Вопрос, как запустить последовательно эти запросы, но в то же время ограничить выполнения с каждого прокси? Застопорился уже в самом начале

Parallel.For(0, data.Count(), new ParallelOptions { MaxDegreeOfParallelism = 1 }, (i) =>
            {
                using (HttpRequest req = new HttpRequest())
                {
                   req.Get("xxx.ru?param=data[i]");
                }
             }
  • Вопрос задан
  • 34 просмотра
Пригласить эксперта
Ответы на вопрос 1
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
Зачем запускать последовательные запросы параллельно?
Я бы решил в лоб
https://docs.microsoft.com/ru-ru/dotnet/api/system...

private static bool _running;
            public static void Main()
            {
                _running = true;
                ThreadPool.SetMaxThreads(5, 5);
                ThreadPool.QueueUserWorkItem(ThreadProc);

                while (_running)
                {
                    Thread.Sleep(100);
                }

            }
            static void ThreadProc(object stateInfo)
            {
                var start = DateTime.Now;
                var proxy = GetProxy();
                try
                {
                    var id = GetNextId();
                    var result = proxy.Execute(id);
                }
                catch (Exception e)
                {
                    _running = false;
                }

                var ts = DateTime.Now - start;
                var delay = (int)(2 * 1000 - ts.TotalMilliseconds);
                if (delay > 0)
                    Thread.Sleep(delay);
            }
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы