|
Постоянный опрос вебсервиса с 1С | ☑ | ||
---|---|---|---|---|
0
Nesh
21.07.16
✎
17:31
|
У нас есть такая задача:
Есть веб сервис, который по запросу отдает данные. Нам в 1с надо эти данные мониторить реалтайм (полсекунды, секунда). Какие есть соображения на эту тему сделать исключительно средствами 1с? |
|||
1
Nuobu
21.07.16
✎
17:33
|
(0) Приступайте.
|
|||
2
Юрий Лазаренко
21.07.16
✎
17:37
|
(0) Взлетит, если объем данных небольшой и их обработка на стороне 1С не будет занимать много времени.
|
|||
3
Юрий Лазаренко
21.07.16
✎
17:38
|
+(2) Но лучше таки на стороне веб-сервиса отслеживать момент, когда пора отправлять данные в 1С, и дергать уже 1Ску.
|
|||
4
Fragster
гуру
21.07.16
✎
17:41
|
на файловой решается запуском сеанса с обработкой, в клиент-сервере - двумя регламентными - одно запускается и работает в цикле дергая сервис, другое просыпается раз в некоторое время и смотрит, например, константу с датой последнего запроса (которую устанавливает первое регламентное). если прошло много времени - прибивает первое фоновое (если оно еще живо) и запускает его еще раз
|
|||
5
Fragster
гуру
21.07.16
✎
17:42
|
вернее одним регламентным и одним фоновым
|
|||
6
Serginio1
21.07.16
✎
17:42
|
Для таких ситуаций лучше
1C Messenger для отправки сообщений, файлов и обмена данными между пользователям |
|||
7
ptiz
21.07.16
✎
17:42
|
(0) Веб-сервис - он чей? Тоже средствами 1С поднят?
|
|||
8
Nesh
21.07.16
✎
17:42
|
(4) вы предлагаете делать регламентное с периодичностью в секунду?
ведь 1с рекомендует не меньше минуты. |
|||
9
Nesh
21.07.16
✎
17:43
|
(7) нет, сторонний
|
|||
10
Fragster
гуру
21.07.16
✎
17:44
|
(8) нет. регламентный вочдог и фоновое, которое работает в цикле с паузой, например запуская ping
|
|||
11
Serginio1
21.07.16
✎
17:44
|
Либо сделать на стороне 1С свой вэб сервис и чтобы получать данные из данного вэб сервиса
|
|||
12
Fragster
гуру
21.07.16
✎
17:45
|
делал такое для мониторинга кластера через ком для гилева
|
|||
13
Nesh
21.07.16
✎
17:46
|
(10) а как фоновое работает? там бесконечный цикл?
|
|||
14
Fragster
гуру
21.07.16
✎
17:46
|
(13) да
|
|||
15
Nesh
21.07.16
✎
17:47
|
(14) так 1с бесконечные цикл рубит из-за переполнения стека вызова
|
|||
16
Fragster
гуру
21.07.16
✎
17:47
|
(15) нет
|
|||
17
Fragster
гуру
21.07.16
✎
17:48
|
(15)
![]() |
|||
18
Мыш
21.07.16
✎
18:13
|
(17) Прелесть картинка )))
|
|||
19
Serginio1
21.07.16
✎
18:21
|
При этом Хвоствая рекурся https://ru.wikipedia.org/wiki/Хвостовая_рекурсия
может разворачиваться многими компиляторами в цикл |
|||
20
Юрий Лазаренко
21.07.16
✎
21:53
|
Вообще такой частый опрос веб-сервиса говорит о том, что некоторую задачу хотят решить неверным способом.
Автор, можешь подробнее написать, чего именно вы хотите достичь? Наверняка найдутся более оптимальные пути решения. |
|||
21
Jija Grenkov
22.07.16
✎
01:08
|
(0) Вариантов у вас не много, к сожаению в 1с нет паузы. Можно использовать ВК(наверняка есть реализации) или пинг, но пингом не все гладко если код может выполняться на разных машинах в разных сетях. А так заупустили вечный цикл с паузой в пол секунды и опрашивайте ваш сервис.
(20) А что они могут хотеть достичь, кроме как поолучать события в реал тайме? Может хотят за постами в фейсбуке следить или слушать некую очередь сообщений. |
|||
22
NSSerg
22.07.16
✎
01:34
|
(21) В 1с миллион способов сделать паузу без вк.
v8: Как в 1С кошерно реализовать задержку (delay, sleep и т. д.)? |
|||
23
Сниф
22.07.16
✎
01:41
|
(9) Если веб-сервис сторонний, то интервал долбления к нему определяется самим веб-сервисом, например, раз в 30 секунд. Если вы будете долбиться чаще, то вас забанят на веб-сервисе.
|
|||
24
Jija Grenkov
22.07.16
✎
01:42
|
(22) Реализовывали этот милилон способов? Когда я сталкивался с этим вопросом, то delay и sleep вообще не дали результата. Оказалось, что преупреждение может зависать, а пинг ведет себя не стабильно и не гарантирует определенныу задержку на разных машинах. А еще 1с может крутится на линуксе.
|
|||
25
Сниф
22.07.16
✎
01:53
|
Написал систему, которая позволяет из 1C отдавать данные по http-запросу за 30 миллисекунд (0.03 секунды). Смешно выглядят такие старые телеги, как веб-сервисы. Вот думаю, кому оптом продать технологию.
|
|||
26
Сниф
22.07.16
✎
02:06
|
+(25) Утверждаю, что мною создана технология, которая позволяет отдавать данные из 1С (например, файл JSON размером в 1 килобайт) за время 50 миллисекунд. Так же утверждаю, что я потратил на это много времени и сил и мне даже сейчас нечего жрать ) Кому интересно - пишите в личку. Дорого, но офигенно.
|
|||
27
Jija Grenkov
22.07.16
✎
02:15
|
(25) 33 запроса в секунду выходит и - это наверняка если отдавать небольшой объект из памяти. К примеру для джавы -- это очень посредственный результат
http://qrman.github.io/posts/2015/06/28/vertx3-performance/ |
|||
28
Сниф
22.07.16
✎
02:40
|
(27) Да, из памяти. Лучшая память 1С - индексированная ТЗ.
|
|||
29
Юрий Лазаренко
22.07.16
✎
08:51
|
(21) Один раз в секунду - это не в реалтайме, это один раз в секунду. В реалтайме - это один вызов в тот момент, когда он нужен.
|
|||
30
Jija Grenkov
22.07.16
✎
10:52
|
(29) Я вот слабо себе представляю реал тайм в вашем описании. Как можно получить сообщение без периодического опроса, если источник пассивен. А исходя из вашей логики даже цикл с опросом без задержки не будет реал тайм. Я не специалист в низкоуровневых тихнологиях, но что-томне подсказывает, что цикл будет всегда в случае с веб сервисами, просто он может быть спрятан глубже или его нужно делать вручную.
|
|||
31
Юрий Лазаренко
22.07.16
✎
10:56
|
(30) А мы пока еще не знаем, пассивен источник, или нет. Поэтому и хочется получить от ТС дополнительную информацию.
|
|||
32
Сниф
22.07.16
✎
11:31
|
(30) Реальный "реал тайм" - Socket, без вариантов.
|
|||
33
Юрий Лазаренко
22.07.16
✎
11:47
|
(32) Ну или не постоянные запросы от 1С к сервису, а от сервиса к 1С тогда когда надо.
|
|||
34
vi0
22.07.16
✎
13:08
|
(28) соответствие лучше
|
|||
35
vhl
22.07.16
✎
13:40
|
(25) Так это будет уже реализовано штатно самой 1С: https://wonderland.v8.1c.ru/blog/povyshenie-proizvoditelnosti-veb-servisov/
|
|||
36
DrZombi
гуру
22.07.16
✎
14:06
|
(26) НЕ, спасибо... Оставь себе :)
|
|||
37
DrZombi
гуру
22.07.16
✎
14:11
|
(0)Зачем вам это? Огласите образно, что ты так за доли секунды хотите получить?
|
|||
38
Borteg
22.07.16
✎
14:15
|
(0) обычно обработчик ожидания и 30 секунд достаточно. Все остальное брятли реализуемо.
|
|||
39
Кирпич
22.07.16
✎
14:16
|
(37) да глупость какая нибудь. тема для мисты.
|
|||
40
МихаилМ
22.07.16
✎
14:32
|
а в мобильном приложении есть Доставляемые уведомления
|
|||
41
Jija Grenkov
22.07.16
✎
14:53
|
(32) И там внутри нет цикла?
(37) Есть спектр задач, где за милисекунды борятся но это не про 1с. А вот мониторинг досок объявлений, откликов, наличия билетов(мониторить возвраты), всеческие электронные очереди. Вполне практические задачи где секунды могут играть роль. |
|||
42
Сниф
22.07.16
✎
19:25
|
+(41) Можно административным путем заставить сотрудника тупо смотреть на зависший экран, но со сторонними клиентами такое не прокатит. Они просто закроют приложение и никогда больше не откроют.
|
|||
43
NSSerg
22.07.16
✎
21:27
|
(24) можно попродробней, каким образом под винду может не работать WScript.Sleep(), на который дана ссылка?
И да, конечно реализовывал, и конечно он отлично работает. |
|||
44
Jija Grenkov
22.07.16
✎
21:38
|
(43) уже точно не помню, но толи ошибку на серверно винде выдавало и не слипало, толи регламентное задание повисало. Оно должно было целый день крутиться и стопать цикл на 5-10 секунд.
|
|||
45
Serginio1
22.07.16
✎
21:50
|
(0) Есть еще один вариант. Отдельное приложение неважно на чем можно ввиде сервиса, опрашивает вэб сервис и если есть изменения посылает вэб сервису 1С сообщение
|
|||
46
Jija Grenkov
22.07.16
✎
22:02
|
(45) я поддерживаю микросервисную архитектуру, но в этом случае туда нужно выносить часть бизнес логки, что бы сервис был законченым куском с точки зерния бизнеса и в таком случае не на 1с прийдется писать много. Я бы использовал:
a. Native API ВК, что бы не нужно было ничего регистрировать. В ВК вынести логику ожидания и опроса, после сего сразу передача результата в 1с. b. Либо spin wait (цикл без паузы). Если обращение к сервису займет 0.1-0.2 сек. и будет выполняться раз в пол секунды, то ресурсы проца будут расходоваться приемлемо. |
|||
47
Serginio1
22.07.16
✎
22:14
|
(46) Мы ничего не знаем, о том что у ТК. Ему дают варианты, а он сам пусть решает, что и как. В любом случае запрос по событию, значительно лучше чем постоянный опрос. Особенно если он не единственный клиент у этого сервиса.
|
|||
48
Jija Grenkov
22.07.16
✎
22:23
|
Можно попросить разработчиков сервиса, что бы вэб сервис отвечал с задержкой в 1 секунду и вопрос решен )))
|
|||
49
Юрий Лазаренко
22.07.16
✎
23:31
|
(48) Напомнило анекдот:
- А ваша собака за один раз килограмм мяса съесть сможет? - Съесть-то она съест, да кто ж ей даст. Ну то есть, попросить-то можно... |
|||
50
Jija Grenkov
23.07.16
✎
00:10
|
(49) прошу мой вопринимать не больше чем шутку. Естественно если просить, то можно вопросить о чем-то более правильном.
|
|||
51
Котокот
23.07.16
✎
01:18
|
(50) Попросить можно и о правильном, с вероятностью 99,9% быть посланным на МПХ.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |