Постоянный опрос вебсервиса с 1С #777074


#0 by Nesh
У нас есть такая задача: Есть веб сервис, который по запросу отдает данные. Нам в 1с надо эти данные мониторить реалтайм (полсекунды, секунда). Какие есть соображения на эту тему сделать исключительно средствами 1с?
#1 by Nuobu
Приступайте.
#2 by Юрий Лазаренко
Взлетит, если объем данных небольшой и их обработка на стороне 1С не будет занимать много времени.
#3 by Юрий Лазаренко
+ Но лучше таки на стороне веб-сервиса отслеживать момент, когда пора отправлять данные в 1С, и дергать уже 1Ску.
#4 by Fragster
на файловой решается запуском сеанса с обработкой, в клиент-сервере - двумя регламентными - одно запускается и работает в цикле дергая сервис, другое просыпается раз в некоторое время и смотрит, например, константу с датой последнего запроса (которую устанавливает первое регламентное). если прошло много времени - прибивает первое фоновое (если оно еще живо) и запускает его еще раз
#5 by Fragster
вернее одним регламентным и одним фоновым
#6 by Serginio1
Для таких ситуаций лучше
#7 by ptiz
Веб-сервис - он чей? Тоже средствами 1С поднят?
#8 by Nesh
вы предлагаете делать регламентное с периодичностью в секунду? ведь 1с рекомендует не меньше минуты.
#9 by Nesh
нет, сторонний
#10 by Fragster
нет. регламентный вочдог и фоновое, которое работает в цикле с паузой, например запуская ping
#11 by Serginio1
Либо сделать на стороне 1С свой вэб сервис и чтобы получать данные из данного вэб сервиса
#12 by Fragster
делал такое для мониторинга кластера через ком для гилева
#13 by Nesh
а как фоновое работает? там бесконечный цикл?
#14 by Fragster
да
#15 by Nesh
так 1с бесконечные цикл рубит из-за переполнения стека вызова
#16 by Fragster
нет
#17 by Fragster
#18 by Мыш
Прелесть картинка )))
#19 by Serginio1
При этом Хвоствая рекурся может разворачиваться многими компиляторами в цикл
#20 by Юрий Лазаренко
Вообще такой частый опрос веб-сервиса говорит о том, что некоторую задачу хотят решить неверным способом. Автор, можешь подробнее написать, чего именно вы хотите достичь? Наверняка найдутся более оптимальные пути решения.
#21 by Jija Grenkov
Вариантов у вас не много, к сожаению в 1с нет паузы. Можно использовать ВК(наверняка есть реализации) или пинг, но  пингом не все гладко если код может выполняться на разных машинах в разных сетях. А так заупустили вечный цикл с паузой в пол секунды и опрашивайте ваш сервис. А что они могут хотеть достичь, кроме как поолучать события в реал тайме? Может хотят за постами в фейсбуке следить или слушать некую очередь сообщений.
#22 by NSSerg
В 1с миллион способов сделать паузу без вк.
#23 by Сниф
Если веб-сервис сторонний, то интервал долбления к нему определяется самим веб-сервисом, например, раз в 30 секунд. Если вы будете долбиться чаще, то вас забанят на веб-сервисе.
#24 by Jija Grenkov
Реализовывали этот милилон способов? Когда я сталкивался с этим вопросом, то delay и sleep вообще не дали результата. Оказалось, что преупреждение может зависать, а пинг ведет себя не стабильно и не гарантирует определенныу задержку на разных машинах. А еще 1с может крутится на линуксе.
#25 by Сниф
Написал систему, которая позволяет из 1C отдавать данные по http-запросу за 30 миллисекунд (0.03 секунды). Смешно выглядят такие старые телеги, как веб-сервисы. Вот думаю, кому оптом продать технологию.
#26 by Сниф
+ Утверждаю, что мною создана технология, которая позволяет отдавать данные из 1С (например, файл JSON размером в 1 килобайт) за время 50 миллисекунд. Так же утверждаю, что я потратил на это много времени и сил и мне даже сейчас нечего жрать ) Кому интересно - пишите в личку. Дорого, но офигенно.
#27 by Jija Grenkov
33 запроса в секунду выходит и - это наверняка если отдавать небольшой объект из памяти. К примеру для джавы -- это очень посредственный результат
#28 by Сниф
Да, из памяти. Лучшая память 1С - индексированная ТЗ.
#29 by Юрий Лазаренко
Один раз в секунду - это не в реалтайме, это один раз в секунду. В реалтайме - это один вызов в тот момент, когда он нужен.
#30 by Jija Grenkov
Я вот слабо себе представляю реал тайм в вашем описании. Как можно получить сообщение без периодического опроса, если источник пассивен. А исходя из вашей логики даже цикл с опросом без задержки не будет реал тайм. Я не специалист в низкоуровневых тихнологиях, но что-томне подсказывает, что цикл будет всегда в случае с веб сервисами, просто он может быть спрятан глубже или его нужно делать вручную.
#31 by Юрий Лазаренко
А мы пока еще не знаем, пассивен источник, или нет. Поэтому и хочется получить от ТС дополнительную информацию.
#32 by Сниф
Реальный "реал тайм" - Socket, без вариантов.
#33 by Юрий Лазаренко
Ну или не постоянные запросы от 1С к сервису, а от сервиса к 1С тогда когда надо.
#34 by vi0
соответствие лучше
#35 by vhl
Так это будет уже реализовано штатно самой 1С:
#36 by DrZombi
НЕ, спасибо... Оставь себе :)
#37 by DrZombi
Зачем вам это? Огласите образно, что ты так за доли секунды хотите получить?
#38 by Borteg
обычно обработчик ожидания и 30 секунд достаточно. Все остальное брятли реализуемо.
#39 by Кирпич
да глупость какая нибудь. тема для мисты.
#40 by МихаилМ
а в мобильном приложении есть Доставляемые уведомления
#41 by Jija Grenkov
И там внутри нет цикла? Есть спектр задач, где за милисекунды борятся но это не про 1с. А вот мониторинг досок объявлений, откликов, наличия билетов(мониторить возвраты), всеческие электронные очереди. Вполне практические задачи где секунды могут играть роль.
#42 by Сниф
+ Можно административным путем заставить сотрудника тупо смотреть на зависший экран, но со сторонними клиентами такое не прокатит. Они просто закроют приложение и никогда больше не откроют.
#43 by NSSerg
можно попродробней, каким образом под винду может не работать WScript.Sleep, на который дана ссылка? И да, конечно реализовывал, и конечно он отлично работает.
#44 by Jija Grenkov
уже точно не помню, но толи ошибку на серверно винде выдавало и не слипало, толи регламентное задание повисало. Оно должно было целый день крутиться и стопать  цикл на 5-10 секунд.
#45 by Serginio1
Есть еще один вариант. Отдельное приложение неважно на чем можно ввиде сервиса, опрашивает вэб сервис и если есть изменения посылает вэб сервису 1С сообщение
#46 by Jija Grenkov
я поддерживаю микросервисную архитектуру, но в этом случае  туда нужно выносить часть бизнес логки, что бы сервис был законченым куском с точки зерния бизнеса и в таком случае не на 1с прийдется писать много. Я бы использовал: a. Native API ВК, что бы не нужно было ничего регистрировать. В ВК вынести логику ожидания и опроса, после сего сразу передача результата в 1с. b. Либо spin wait (цикл без паузы). Если обращение к сервису займет 0.1-0.2 сек. и будет выполняться раз в пол секунды, то ресурсы проца будут расходоваться приемлемо.
#47 by Serginio1
Мы ничего не знаем, о том что у ТК. Ему дают варианты, а он сам пусть решает, что и как. В любом случае запрос по событию, значительно лучше чем постоянный опрос. Особенно если он не единственный клиент у этого сервиса.
#48 by Jija Grenkov
Можно попросить разработчиков сервиса, что бы вэб сервис отвечал с задержкой в 1 секунду и вопрос решен )))
#49 by Юрий Лазаренко
Напомнило анекдот: - А ваша собака за один раз килограмм мяса съесть сможет? - Съесть-то она съест, да кто ж ей даст. Ну то есть, попросить-то можно...
#50 by Jija Grenkov
прошу мой вопринимать не больше чем шутку. Естественно если просить, то можно вопросить о чем-то более правильном.
#51 by Котокот
Попросить можно и о правильном, с вероятностью 99,9% быть посланным на МПХ.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С