Как получить количество активных потоков шаблона?

Alexmd

Client
Регистрация
10.12.2018
Сообщения
1 022
Благодарностей
1 421
Баллы
113
Как получить количество работающих потоков шаблона?
Не нахожу такого метода. Накопал метод, возвращающий запущенные потоки всего постера, а у конкретного шаблона получить не получается.

Я одним шаблоном управляю шаблонами-парсерами, запуская и прерывая потоки, добавляя выполнения при определенных условиях.. но хотелось бы после прерывания шаблона убедиться, что шаблон встал и все потоки завершились, и только потом уже делать корректные расчеты по новым запускам. Пока в этом месте стоит пауза, но это меня не устраивает, так как время выполнения у разных кубиков может быть разным от чего размер паузы непредсказуем и запуски накладываются друг на друга, да и каждая секунда на вес золота. Работающий поток также не получается прервать и по таймауту.
Надеюсь, объяснил понятно.

Была тема, сейчас не найду, по-моему @doc искал решение... но помню, что в теме оно так и не нашлось. Нужны не выполнения, а именно активные потоки конкретного шаблона.
 
  • Спасибо
Реакции: maxim.gutareff

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 712
Баллы
113
переделай под себя. у меня только попытки контролит.

C#:
string name_result = "name_sab"  ;
var list1=ZennoPoster.TasksList; // получаем список всех задач в системе
// проверяем количество попыток
int NumberOfTries=1;
string Status_Sablon="";
var tasksList = new List<string>(ZennoPoster.TasksList);
for (int i=0; i<tasksList.Count; i++) {
    string Name_Sablon            =     Regex.Match(tasksList[i], @"(?<=<Name>).*(?=</Name>)").Value;
     string NumberOfTries_str     =     Regex.Match(tasksList[i], @"(?<=ll><NumberOfTries>).*?(?=</NumberOfTries>)").Value;
    Status_Sablon                =     Regex.Match(tasksList[i], @"(?<=<Status>).*?(?=</Status>)").Value;
       if (Name_Sablon.CompareTo(name_result)==0) {
        try { NumberOfTries=  int.Parse( NumberOfTries_str); }  catch{}
        break;
  }
}
 
  • Спасибо
Реакции: Alexmd

Alexmd

Client
Регистрация
10.12.2018
Сообщения
1 022
Благодарностей
1 421
Баллы
113
Не подходит.
После выполнения этого
C#:
ZennoPoster.InterruptTask(MapParser);
project.SendInfoToLog("Прерывание потоков парсера......",true);
ZennoPoster.SetMaxThreads(MapParser,0);
ZennoPoster.SetTries(MapParser,0);
Мне надо дождаться, пока потоки сдохнут. Именно число все еще активных потоков.
Чтобы я написал так
C#:
{Thread.Sleep(500);
}while(активных потоков MapParser > 0);
И дальше работал "с чистого листа"
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 712
Баллы
113
я же вроде написал что надо доработать.... вместо NumberOfTries надо выпарсить значение отвечающие за число активных потоков. наверняка там есть, сам посмотреть не могу сейчас.
 

Alexmd

Client
Регистрация
10.12.2018
Сообщения
1 022
Благодарностей
1 421
Баллы
113
наверняка там есть
В том и загвоздка. Ткните кто-нибудь меня носом, если это там есть - в упор не вижу.
А этого там нет, поэтому и создал тему.
Вот, нашел тему Дока 3-хлетней давности.

@Zymlex, @BAZAg, @nicanil - на вас вся надежда.
Неужели нет инструмента для получения значения активных потоков шаблона?
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 712
Баллы
113
ну там в самом деле нет количества выполняемых задач. ну если задача определить что ничего не работает, то можно пойти путем костылей.
вот например
<Status>Complete</Status> возникает когда все завершено хорошо , зеленая галочка
Stop - когда остановка, красный квадрат или желтый
Newbie - когда врубили запуск, но потоков еще нет, желтая звезда,
Perform - когда работают потоки, синий треугольник

ну и в совокупности с NumberOfTries = 0 и Complete = Newbie или Complete можно сделать вывод что шаблон не работает и имеет 0 активных выполнений.
 

nicanil

Client
Регистрация
06.03.2016
Сообщения
2 242
Благодарностей
1 816
Баллы
113
Неужели нет инструмента для получения значения активных потоков шаблона?
У меня две новости.
Плохая - к сожалению сейчас такой возможности нету:(
Хорошая - в версии 7.2.2.0 эта возоможность появится :-)
 
  • Спасибо
Реакции: djaga, SHILY и Alexmd

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