Форум OlegON > Программы и оборудование для автоматизации торговли > Маркировка

Техническая реализация запрета продажи маркированных товаров : Маркировка

19.05.2024 2:49


20.01.2024 16:32
volk13
 
Цитата:
student а про явное удаление не забываешь случаем ?
не забываю, везде стоит Шел = "" (при выходе из функций/процедур, при возвратах и т.д.. опубликованный мною код тут - чуть упрощён всегда, а при внедрении - я эти моменты конечно же учитываю..)..
Продолжаем наблюдать, не торопите вы меня, самому интересен уже конечный результат (и конечный вывод).. А это - уже близко.. я - чую.. .. ;)
20.01.2024 16:48
volk13
 
Цитата:
student курлом как и шелом пользуется оооочень много народу и про проблемаы с шелом я слышу часто, а вот про курл практически ничего
если бы "завис" Шел - не сработал бы цикл (если код внимательно посмотришь).. и я про это уже упоминал выше..
а раз сработал цикл - значит дело в этот (последний) раз - было точно не в Шел, а возможно в curl (но однозначно не могу утверждать про curl, т.к. может быть и curl по таймауту своему сработал-бы, если бы я не прервал цикл чуть ранее.. И у курла и у меня - таймаут был равен 5 сек, поэтому - не понятно кто быстрее сработал - мой таймаут или таймаут курла.. Поэтому - я у себя и установил сейчас таймаут на 2 сек. больше, чем у курла..)
Так что - наблюдаем - если сработает опять - то что? (курл или мой таймаут?)
А если зависнет намертво - то тогда точно Шел.
Ждём, короче... Очередной "зависон" ну или прерывание по циклу.. И всё станет ясно
20.01.2024 16:58
student
 
Цитата:
volk13 не сработал бы цикл
т.е. ты не допускаешь возможность того что шелл завис на запуске курла и последний просто не стартанул и как результат отсутствие файла ответа в твоей проверке ?

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

Правка: student, 20.01.2024 17:00
20.01.2024 18:07
volk13
 
Цитата:
student т.е. ты не допускаешь возможность того что шелл завис на запуске курла и последний просто не стартанул и как результат отсутствие файла ответа в твоей проверке ?
Конечно я этого не допускаю!!!

Почему? Потому что возвращаемся к истокам проблемы:

1. Сначала было: Попытка КодВозврата = Шел.Run(стр, 0, -1) Исключение КонецПопытки;
И после строчки Шел.Run (стр, 0, -1) - дальше алгоритм не двигался, был полный зависон, приходилось прерывать принудительно (попросту - перезагружать РМК), и тогда (при принудительной перезагрузке) - в лог записывался КодВозврата = "-1073741510".

2. Сейчас у меня: Попытка КодВозврата = Шел.Run(стр, 0, 0) Исключение КонецПопытки;
И после строчки Шел.Run(стр, 0, 0) - идёт уже моя проверка файла ответа.. (заметь - когда в параметре Run было "-1" - после зависания дальнейший алгоритм не выполнялся, следовательно - если проблема именно в Шел.Run, то - и при параметре "0" после зависания именно ШЕЛ - моя проверка не будет выполняться, согласен??)
А если дальнейший алгоритм (моя проверка) выполняется после Шел.Run (т.е. происходит переход к моей проверке именно curl, который был запущен независимо от Шел.Run (раз мы указали в параметрах "0"), то значит однозначно проблема уже не в Шел!!!
Согласен?

PS. Вот в этой теме уже отметился victuan, которому обычно всегда нравились мои алгоритмы, а некоторыми он даже восхищался (не побоюсь этого слова).. ;))
Он то и подтвердит мою правоту. если что.. Ну или ткнёт меня в логическую ошибку.. Хотя - пока-то всё работает, и я жду очередного проявления либо "зависания" (тогда точно виноват Шел), либо срабатывания моей проверки (тогда виноват curl).

PPS. Работа происходит мало того, что на Windows Server 2008, так ещё и под терминальным клиентом (а терминальных клиентов - под полтинник на сервере терминалов), поэтому - вполне допускаю, что такой режим работы - как-то влияет и на работоспособность curl (причём есть два curla - один для ЕГАИС, второй - для ЧЗ)//

Вот как-то так...
;))
20.01.2024 19:39
volk13
 
Цитата:
volk13 А если дальнейший алгоритм (моя проверка) выполняется после Шел.Run (т.е. происходит переход к моей проверке именно curl, который был запущен независимо от Шел.Run (раз мы указали в параметрах "0"), то значит однозначно проблема уже не в Шел!!!
Ну вот, на одном РМК вижу:
Цитата:
20.01.24 16:29:25 "Сработал "костыль" принудительного таймаута в 6 сек."
Значит - проблема не в Шел, а в curl (в curl таймаут был в 4 сек установлен, а сработал - именно мой таймаут в 6 сек).. (как, в принципе, я всегда и предполагал.. ну хоть убейте меня).. ;)
Главное - костыль работает и не даёт зависнуть алгоритму.. А вы - имейте ввиду, что при некоторых условиях (см. выше) - бывает и такое, хоть ты выспись..)
20.01.2024 19:46
student
 
Цитата:
volk13 Значит - проблема не в Шел, а в curl
как же с вами 1с-ками тяжело.... не факт, шелл не смог запустить курл и сам отвалил так как сейчас типа асинхрон - все повисело твой таймаут и отвалило...
вот когда однозначно определишь что курл был запущен и остался в процессах только тогда можно будет говорить о том что именно он виноват
20.01.2024 19:49
volk13
 
вот на другом ОП:
Цитата:
20.01.24 17:35:00 "Сработал "костыль" принудительного таймаута в 6 сек."
...
20.01.24 19:06:18 "Сработал "костыль" принудительного таймаута в 6 сек."
ещё на другом ОП:
Цитата:
20.01.24 16:16:22 "Сработал "костыль" принудительного таймаута в 6 сек."
...
20.01.24 18:45:38 "Сработал "костыль" принудительного таймаута в 6 сек."
Ну из всех РМК - пока всё на текущий момент..

Вывод - костыль работает!.. (РМК не приходится перезагружать и жалоб нет)
Вопрос в другом - почему не работает curl (со своим таймаутом в 4 сек.)..
20.01.2024 19:51
volk13
 
Цитата:
student вот когда однозначно определишь что курл был запущен и остался в процессах только тогда можно будет говорить о том что именно он виноват
И как же я это определю, если каждая проверка марки - заново запускает curl.. (причём в каждый раз в своей терминальной сессии для каждого терминального клиента)..

Правка: volk13, 20.01.2024 19:56
20.01.2024 20:05
student
 
Цитата:
volk13 Вопрос в другом - почему не работает curl (со своим таймаутом в 4 сек.)..
а вдруг он сработал а шелл этого не понял - висит и не принимает ответку от команды, либо понял но не смог вернуть эту самую ответку вызывающему процессу?
Цитата:
volk13 И как же я это определю
просто :) во первых если он завис то висит в процессах - само по себе ничего не возникает из ничего и в никуда не исчезает
если сложно по процессам - используй логгирование курла - опции командной строки приводил выше (там если еще покопаться можно и др варианты найти), имя файла трассы делай по метке времени чтобы потом привязать к своему логу
я не утверждаю что курл без греха (для винды там многое от конкретной сборки зависит), я просто хочу донести мысль что не все так однозначно как ты пытаешься представить
дальнейшая дискуссия на мой взгляд здесь бессмысленна т.к. у тебя уже есть назначенный виновник

пы сы
есть еще вариант - ошибка выполнения запроса (свзяз пропала или проблемаы на сервере или еще что то) когда курл отработал но файл ответа не сформирован, сам курл вернул ошибку а вот шелл ее обработать и передать в вызывающий процесс не может
в этом случае ваапче никто не виноват кроме расположения звезд и фазы луны :)

Правка: student, 20.01.2024 20:16
20.01.2024 20:13
volk13
 
Цитата:
student просто :) во первых если он завис то висит в процессах - само по себе ничего не возникает из ничего и в никуда не исчезает
Вот точно! Спасибо за подсказку!
Ну так вот и смотри - как раз 5 курлов и висит (1 - с одного РМК, 2 - с другого, 2 - с другого) - совпало с логами, что выше!
Теперь-то - я убеждён, и надеюсь, и тебя убедил..
;))
А теперь проблема - как их убирать с процессов (посмотрю, что будет вечером, может сами отвалятся, когда терминальный клиент из сессии выйдет..)




(0.2Мб)

Правка: volk13, 20.01.2024 20:16
Часовой пояс GMT +3, время: 02:49.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.