Проверить прокси, который в текущий момент занят процессом

  • Автор темы Автор темы Axel
  • Дата начала Дата начала

Axel

Client
Регистрация
20.03.2017
Сообщения
164
Реакции
9
Баллы
18
Добрый день,

Запускаю 1 шаблон в 10 потоков, работает с прокси разных источников. По ходу теста выявил что есть пересечения, когда один прокси подхватывается разными потоками, что весьма нежелательно.

Подскажите, возможно ли проверять каждый раз активным потоком шаблона, не используется ли этот прокси в уже запущенных потоках?
 
Как вариант сохранять прокси в список, далее когда берется новый прокси для нового потока проверять если ли такой же прокси уже в списке, если нет - работаем, если есть - заново берем прокси
 
Да, как раз только что и поработал с этим вариантом. Как не знаю но он все равно хватает повторно.
 
Все всегда зависит от количества прокси и количества потоков. Если потоков меньше, чем прокси, то можно брать из списка по очереди (берем первый, кладем в конец, сохраняем список, следующий поток берет первый, кладет в конец). Если потоков много, то либо через список/таблицу, где добавляем статус прокси (допустим, free/busy). Таким образом берем прокси, у которого free, меняем на busy, в конце работы меняем обратно на free. Ну или по этой же логике через базу данных (будет быстрее и стабильнее).
 
  • Спасибо
Реакции: Sergodjan
Да вот потому и пишу здесь что перепробовали уже сохранения. Оно видимо накладывается потоками на файлы и все равно тянет.
 
Да вот потому и пишу здесь что перепробовали уже сохранения. Оно видимо накладывается потоками на файлы и все равно тянет.
Попробуй метод предложенный выше, вот код.
C#:
Развернуть Свернуть Копировать
lock (SyncObjects.ListSyncer)
    {
        IZennoList proxyList = project.Lists["proxy"];
        proxyList.Bind(project.Variables["proxy_file"].Value); // Файл с прокси
        string proxy_line = project.Variables["proxy"].Value = proxyList[0].Trim(); // Берем прокси в переменную
        proxyList.RemoveAt(0); // Удаляем первую строку
        proxyList.Add(proxy_line); // Записываем прокси в конец
    }
 
Как раз это и делали, не помогает. Час работы и уже три процесса на один прокси повисли :(

Я добавлю, дело в том что к одному списку так или иначе наскакивают разные потоки одного шаблона и параллельно делают как раз что предложено выше. Это совершенно точно - перезаписываются прокси, вдруг из списка начинают пропадать. Этот бардак по идее не должен быть но он есть. И как его обойти непонятно.
 
Последнее редактирование:

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)