|
Всегда ли вызов метода ФоновоеЗадание.Отменить() должен завершать фоновое задание? | ☑ | ||
---|---|---|---|---|
0
TormozIT
гуру
21.08.19
✎
16:06
|
Иногда замечал, что вызов метода ФоновоеЗадание.Отменить() (например в консоли заданий) не завершает фоновое задание и оно продолжает выполняться и завершается успешно. Замечали вы подобное поведение? Каким образом внутри платформы работает метод Отменить()? Сохраняет ли он флаг необходимости прервать фоновое задание при первой следующей возможности?
|
|||
1
mistеr
21.08.19
✎
16:10
|
Иногда просто возможности прервать может не оказаться.
|
|||
2
sitex
naïve
21.08.19
✎
16:11
|
(0) Да постоянно замечаю в той же БУХ3. А что делать . они продолжают выполняться до конца. Смирился .
|
|||
3
rphosts
21.08.19
✎
16:26
|
(0) вроде бывает такое, но у меня мала статистика. Не связано с тем, что открыта явная/неявная транзакция?
|
|||
4
Cyberhawk
21.08.19
✎
17:01
|
(1) Очевидно же что прервется на очередной строке кода (команде интерпретатору)
|
|||
5
TormozIT
гуру
21.08.19
✎
17:23
|
(4) В том то и дело, что наблюдается другое поведение, как я описал в (0).
|
|||
6
Вафель
21.08.19
✎
17:35
|
по идее конечно должно текущий запрос рубить и отменять.
но сделали как сделали |
|||
7
Cyberhawk
21.08.19
✎
17:36
|
(5) Я так понял поведение можно описать "команда отмены молча игнорируется".
|
|||
8
TormozIT
гуру
21.08.19
✎
17:37
|
(7) Да
|
|||
9
Cyberhawk
21.08.19
✎
17:38
|
Ставил эксперименты, когда в сеансе ФЗ выполнение кода поставлено на паузу (отладчик стоит в точке останова), а из другого сеанса послана команда отмены этого ФЗ (предполагаем что у пользователя посылающего команду есть право администрирования или мы перешли в привилегированный режим)?
И возобновляем выполнение кода через разные промежутки времени: через 5, 10, 60 секунд. |
|||
10
Cyberhawk
21.08.19
✎
17:38
|
Возможно команда отмены "теряется" если за некий промежуток времени выполнение кода не перешло к очередной строке?
|
|||
11
Cyberhawk
21.08.19
✎
17:39
|
Также интересно записать цикл в одну строку, внутри которого писать в ЖР диагностические сообщения.
И посмотреть доходит ли до конца выполнение такого цикла, либо команда отмены рубит сразу. |
|||
12
TormozIT
гуру
21.08.19
✎
23:24
|
(10) Да. Вполне вероятно. И далее возникает логичная мысль - для интерактивного прерывания фонового задания надо запускать еще одно фоновое задание, которое будет в течение некоторого времени слать команду отмены с частотой например раз в секунду и по завершению возвращать результат отмены - успех/неуспех. А далее в свою очередь возникает мысль - а почему в платформе этого не сделали (например результатом и параметром метода Булево Отменить(Число СколькоСекундПытаться))?
|
|||
13
TormozIT
гуру
22.08.19
✎
06:58
|
(9) Нет. Исследований пока не проводил. Показалось, что здесь должны быть специалисты, которые могли уже провести такие исследования и поделиться опытом.
|
|||
14
sitex
naïve
22.08.19
✎
08:13
|
(10) Возможно и не теряется, а висит в ожидания выполнения. И до ходит когда фон.зд выполнилось.
(11) Я примерно такое пытался делать при: 1) Запросах напрямую к SQL из 1С , записью в ЖР в ФЗ, в ЖР ничего попадет даже после выполнения ФЗ.+ Стал замечать что если после того как отмену посылаешь в Фз может тупо в Сеансах зависнуть и тут только reboot службы. |
|||
15
TormozIT
гуру
25.08.19
✎
09:48
|
Провел эксперименты на 8.3.13 серверной. Сеанс фонового задания вроде бы всегда сразу завершается, а соединение завершается при первой возможности. Т.е. в проведенных опытах не возникло необходимости в повторной отправке команды "Отменить" фоновому заданию. Но скорее всего я просто не нащупал нужные условия для воспроизведения ситуации, когда фоновое задание все таки завершается успешно.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |