|
Завершение фонового задания | ☑ | ||
---|---|---|---|---|
0
Defender77
24.09.18
✎
10:36
|
Всем привет,
Можно как-то отследить аварийное завершение фонового задания, при запуске нескольких? Запускаю 8 заданий, жду, пока завершатся функцией Ожидатьзавершения(списокЗаданий). когда одно из них сваливается с ошибкой, то программа падает в исключение, но остальные задания продолжают работать. Сделал бесконечный цикл: но после первой ошибки программа больше не ждет, а сразу попадает в ветку Исключение. Пробовал снять фоновое задание из консоли - падает в исключение а все задания с состоянием "Задание выполняется". Это как-то можно победить? |
|||
1
Волшебник
24.09.18
✎
10:37
|
Убери бесконечный цикл
|
|||
2
Serg_1960
24.09.18
✎
10:41
|
ОжидатьЗавершение(ОчередноеЗаданиеИзСпискаЗаданий)
|
|||
3
Defender77
24.09.18
✎
10:47
|
(1) Тогда программа завершается - пользователь видит ошибку и может начать загрузку заново. Т.е. 7 тредов работают и еще восемь на помощь им )))
|
|||
4
Defender77
24.09.18
✎
10:49
|
(2) м.. это как? Ждем пока завершится первое, потом ждем второе и т.д.? Кривовато как-то...
|
|||
5
DmitrO
24.09.18
✎
10:54
|
В 8.3.13
Реализована возможность ожидать завершение работы одного или нескольких фоновых заданий в течение заданного промежутка времени. Реализован метод ОжидатьЗавершенияВыполнения() для объектов ФоновоеЗадание и МенеджерФоновыхЗаданий. Метод ОжидатьЗавершения() считается устаревшим и не рекомендуется к использованию. Рекомендуется выполнить анализ прикладного решения и изменить алгоритмы работы с фоновыми заданиями. Улучшено диагностическое сообщение, которое формируется при попытке ожидать завершения фонового задания, которое отсутствует в списке выполняющихся или завершившихся фоновых заданий. Данная возможность не предоставлялась. Была доступна возможность ожидать завершение работы одного или нескольких фоновых заданий с установкой таймаута, однако любое изменение состояния фонового задания, не являющееся нормальным завершением, сопровождалось исключением. Диагностика аварийных ситуаций при ожидании завершения несуществующего фонового задания была некорректной. Источник: http://downloads.v8.1c.ru/content//Platform/8_3_13_1513/1cv8upd_8_3_13_1513.htm#6e6da165-081e-11e8-a3f7-0050569f678a |
|||
6
Defender77
24.09.18
✎
10:56
|
(5) Нужно обновляться. Спасибо!
|
|||
7
DmitrO
24.09.18
✎
10:57
|
(6)да, а пока вам "не предоставляется такая возможность" :)
|
|||
8
DmitrO
24.09.18
✎
11:00
|
да не, а если обойти так:
почему бы из массива не убирать задания, на которых словили сиключения, цикл придется оставить. |
|||
9
Defender77
24.09.18
✎
11:07
|
(8) Так я и пишу: задания сами падают довольно редко. А когда удаляю через консоль, то все задания со статусом "Выполняется"
|
|||
10
DmitrO
24.09.18
✎
11:20
|
(9)ну, это тогда совсем плохо, вероятно статус "скеширован" в объекте задания. И изменения из 13го релиза могут не решить именно эту проблему.
Предполагаю, что после удаления задания через консоль, надо объекты заданий, заново получить по идентификатору, возможно статус будет правильный. |
|||
11
Serg_1960
24.09.18
✎
11:27
|
"Кривовато как-то..."(цы)
В ОжидатьЗавершения(ФоновыеЗадания) реализован метод "Всё или ничего". Что логично, если задания кто-то зачем-то :) "связал" друг с другом списком. (10) Там для этого где-то есть кнопочка "Обновить". |
|||
12
DmitrO
24.09.18
✎
11:31
|
(11)не, я не имел в виду отображение в консоли, я (9) понял так, что программно серверный код показывает не тот статус у задания, после снятия из консоли.
|
|||
13
Serg_1960
24.09.18
✎
11:39
|
Ааа... понял. Мне больше нравится ПолучитьФоновыеЗадания
(офф) Навеяло, 2008 год, ветка на тему "Давайте делать паузы в словах"(с) - три паузы по минутке каждая Пока Повтор = 1 По 3 Цикл Попытка ФоновыеЗадания.ПолучитьФоновыеЗадания(Новый Структура("Наименование", "Моё первое задание"))[0].ОжидатьЗавершения(60); Исключение КонецПопытки; КонецЦикла; |
|||
14
Serg_1960
24.09.18
✎
11:58
|
PS: у автора, имхо, бесконечное зацикливание не в алгоритме, а в голове :)
Ожидать можно завершения всех восьми заданий или сразу, или... всё равно ведь сидим, ждём, ничего не делая - можно ждать в цикле по списку, опрашивая задания по очереди. Чтобы скучно не было :)) Скуки ради, можно для разнообразия вычеркивать из списка уже завершённые. Просто напомню: в этих функциях есть параметр "Таймаут". |
|||
15
Defender77
24.09.18
✎
16:04
|
(14) У автора все отлично с зацикливанием ))) Таймаут тоже не сильно прокатывает - загрузка идет порядка 2-х часов
Взлетело в таком виде. нужно обновлять список заданий и тогда ОжидатьЗавершения() отрабатывает правильно. УбитыеЗадания = Новый Массив; Пока Истина Цикл Попытка ФоновыеЗадания.ОжидатьЗавершения(лМассивЗаданий); Прервать; Исключение Отказ = Истина; Для каждого сЗадание из лМассивЗаданий цикл _задание = ФоновыеЗадания.НайтиПоУникальномуИдентификатору(сЗадание.УникальныйИдентификатор); Если _задание.Состояние = СостояниеФоновогоЗадания.ЗавершеноАварийно Тогда Сообщить("Ошибка завершения фонового задания "+_задание.ИнформацияОбОшибке.Описание+" "+_задание.ИнформацияОбОшибке.ИсходнаяСтрока); УбитыеЗадания.Добавить(_задание); КонецЕсли; КонецЦикла; Для Каждого Стр из УбитыеЗадания Цикл к = лМассивЗаданий.Количество()-1; Пока к >= 0 Цикл сЗадание = лМассивЗаданий[к]; Если Стр.УникальныйИдентификатор = сЗадание.УникальныйИдентификатор Тогда лМассивЗаданий.Удалить(к); КонецЕсли; к = к - 1; КонецЦикла; КонецЦикла; Если лМассивЗаданий.Количество() = 0 Тогда Прервать; КонецЕсли; КонецПопытки; КонецЦикла; |
|||
16
Вафель
24.09.18
✎
16:09
|
может на клиенте через обраотчик опрашивать статус?
|
|||
17
Волшебник
24.09.18
✎
16:16
|
(3) Добавляй запись в регистр "Загрузки". При попытке загрузить повторно проверяй последние загрузки и предупреждай пользователя.
|
|||
18
Serg_1960
24.09.18
✎
18:06
|
(15) Зачем бесконечный цикл, если у тебя уже есть удаление заданий из списка? Осталось добавить удаление выполненных заданий и можно крутить опрос заданий Пока лМассивЗаданий.Количество() Цикл.
|
|||
19
Defender77
24.09.18
✎
21:25
|
(18) По-моему, крутить циклы с опросами моветон. А тут ожидаешь завершения - и вроде как весь в белом. Хз что там понаписали в 1С, пусть будет на их совести.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |