Контроль над потоками

IgorSush

Client
Регистрация
11.02.2016
Сообщения
312
Благодарностей
108
Баллы
43
Здравствуйте!
В больших шаблонах некоторые потоки перестают выполнять действия. Толи ждут чего-то, толи еще что-то... С течением времени таких становится все больше. За ночь из 30 потоков 10 в итоге хрен знает чем заняты, но работы не совершают и не закрываются, в логах не светятся. Бесконечных циклов в шаблоне нет, явных логических ошибок тоже, иначе все случалось бы чаще.
В связи с этим хотелось бы спросить:
1. Как можно отследить на каком действии в данный момент находится каждый из потоков? Как замутить лог с PID потоков и ID действием в данный момент. И обновлением хотя бы раз в минуту.
2. Как можно в шаблоне получить PID потока? Чтобы конкретный поток мог время от времени "отстукиваться" в контрольный файл, типа все ОК, я работаю.
3. Как можно прибить конкретный поток? Извне по taskkill PID? или самим ЗП, чтобы он мог грубо его закрыть по неудаче.
4. Есть ли в ЗП настройка, где жестко можно прописать срок жизни потока, по истечению которого, поток бы убивался ЗП?
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 712
Баллы
113
1) ID Действия текущего получить и залогировать нельзя
2) http://zennolab.com/discussion/threads/zapusk-programm-nuzhen-vozvrat-pid.16803/#post-136853
3) убить по черному можно базу, а не отдельный поток.
Может проще убивать то что течет, например, ограничивая по оперативе? http://zennolab.com/discussion/threads/nuzhno-ubit-proces-cherez-c.14937/#post-90515
4) Нет
 
  • Спасибо
Реакции: IgorSush

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 116
Баллы
113
1. Делал что-то похожее только для проблемных кубиков. Например, клик по элементу
C#:
Tab tab = instance.ActiveTab;
HtmlElement he = tab.FindElementByAttribute("a", "href", "domen.ru", "regexp", 0);
if (!he.IsVoid) he.RiseEvent("click", "Full");

// Если клик не прошел, записываем в лог ошибку
project.SendErrorToLog("Ошибка!", true);

string path = project.Directory + @"\LogError.txt";
string dt = DateTime.Now.ToString("dd.MM.yyyy HH:mm:ss");
var error = project.GetLastError();

File.AppendAllText(path, project.TaskId + "|" +
    dt + "|" +
    "Событие в модуле: " + error.ActionComment + "|" +
    "id действия: " + error.ActionId + "|" +
    "id группы действий: " + error.ActionGroupId + "\r\n\");
 
Последнее редактирование:
  • Спасибо
Реакции: IgorSush

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 712
Баллы
113

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 116
Баллы
113

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 116
Баллы
113
А в C:\Program Files\ZennoLab\ZennoPoster Pro\Progs\Logs\executionLog.txt логи разве не в реальном времени пишутся?
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 712
Баллы
113
ID экшенов туда не пишутся успешных
 
  • Спасибо
Реакции: Dimionix

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