асинхронный режим

Mini web-сервер для печати чеков на фискальных регистраторах из мобильных приложений через HTTP запрос JSON.
Ответить
epiniguin
Сообщения: 66
Зарегистрирован: 28 мар 2017, 18:36

асинхронный режим

Сообщение epiniguin » 20 апр 2017, 16:41

Использую тестовый HTML-скрипт с вашего сайта.
Для печати слип-чека передаю в ExecuteCommand async=true.

Однако результат получаю всё равно с задержкой до окончания печати чека и со статусом=0, т.е. уже после успешного завершения команды.

Я ожидал, что при асинхронном режиме ответ будет сразу со статусом 1 или 4, чтобы потом запросить результат.

Audim
Администратор
Сообщения: 2395
Зарегистрирован: 17 мар 2015, 18:36

Re: асинхронный режим

Сообщение Audim » 20 апр 2017, 19:17

Асинхронный режим - пережиток старого, надо убрать из документации :)
Используйте в данных команды поле "Timeout" - время в секундах сколько ожидать завершения команды.
Ставьте допустим 1 - тогда управление вернется сразу и уж далее проверять выполнение через "GetRezult"

epiniguin
Сообщения: 66
Зарегистрирован: 28 мар 2017, 18:36

Re: асинхронный режим

Сообщение epiniguin » 20 апр 2017, 20:42

Audim писал(а):Асинхронный режим - пережиток старого, надо убрать из документации :)
Используйте в данных команды поле "Timeout" - время в секундах сколько ожидать завершения команды.
Ставьте допустим 1 - тогда управление вернется сразу и уж далее проверять выполнение через "GetRezult"
Да, Timeout работает.
В чем разница путей Execute/sync и Execute/async тогда?

И ещё вопрос.
Например, ставлю Timeout:30. Будет ли в течение этих 30 секунд сервер выполнять команды для других ККМ или будет ставить их в очередь и ждать выполнения последней команды или истечения 30 секунд?

Audim
Администратор
Сообщения: 2395
Зарегистрирован: 17 мар 2015, 18:36

Re: асинхронный режим

Сообщение Audim » 20 апр 2017, 20:53

В чем разница путей Execute/sync и Execute/async тогда?
Ни в чем.. Пережиток старого - для совместимости

Например, ставлю Timeout:30.
Будет ли в течение этих 30 секунд сервер выполнять команды для других ККМ или будет ставить их в очередь и ждать выполнения последней команды или истечения 30 секунд?


Команда ставится в очередь и ожидается ее постановка из очереди на выполнение и само выполнение в течении 30 сек.
При этом если в очереди были команды то сначала выполняются они.
Если команда уже начилась выполняться но не закончилась - в статусе вернет Run = 1
Если команда так и осталась ожидать в очереди то вернет NotRun = 4
Если команда выполнилась то вернет или Ok = 0 или Error = 2.

Для GetRezult еще может вернуть NotFound = 3, - не найдена ранее запущенная команда команда

ЗЫ: Можно добавить в очередь по ИНН а не по номеру устройства.
Тогда если на сервере две ККТ с этим ИНН - то получается одна очередь на 2 ККТ - команды поочередно ставятся то на одну то на другую ККТ.

epiniguin
Сообщения: 66
Зарегистрирован: 28 мар 2017, 18:36

Re: асинхронный режим

Сообщение epiniguin » 20 апр 2017, 21:27

Audim писал(а): Команда ставится в очередь и ожидается ее постановка из очереди на выполнение и само выполнение в течении 30 сек.
Вот пошла она на выполнение и выполняется.
В этот момент на ККМ-сервер приходит ещё одна команда но для другого ККМ. Она будет ждать или сразу уйдёт на выполнение?

Audim
Администратор
Сообщения: 2395
Зарегистрирован: 17 мар 2015, 18:36

Re: асинхронный режим

Сообщение Audim » 20 апр 2017, 22:51

Если для другого то сразу на него уйдет.
Сервер внутри себя многопоточен - каждое устройство - свой поток.

epiniguin
Сообщения: 66
Зарегистрирован: 28 мар 2017, 18:36

Re: асинхронный режим

Сообщение epiniguin » 20 апр 2017, 22:53

Audim писал(а):Если для другого то сразу на него уйдет.
Сервер внутри себя многопоточен - каждое устройство - свой поток.
Отлично!

Ответить