
Alexander
25.09.2018
06:09:17
ребятки, как реализовать такой паттерн, есть задачи, они обрабатывают данные, и информируют о своем выполнении хаб, в хабе висят клиенты по WebSocket и им рассылаются сообщения о прогрессе задач.
сначала сделал по тикеру, хаб опрашивает этот пулл задач раз в 500мс., собирает данные - и шлет на клиент. но если задач нет (а их чаще нет, чем они есть), то происходит бессмысленная работа. решил сделать так, что задачи сами оповещают хаб клиентов о своем прогрессе по каналу, но другой вопрос, если задача "упала", а такое вполне возможно, то последнее сообщение улетевшее на клиент будет о том, что задача жива, и получается что клиент никак не узнает о завершении задачи.
как это лучше реализовать, кто-то знает?
слишком много букв, и ответ - никак. Ты все не через ту сторону объясняешь


b0000000000000t
25.09.2018
06:09:39
ребятки, как реализовать такой паттерн, есть задачи, они обрабатывают данные, и информируют о своем выполнении хаб, в хабе висят клиенты по WebSocket и им рассылаются сообщения о прогрессе задач.
сначала сделал по тикеру, хаб опрашивает этот пулл задач раз в 500мс., собирает данные - и шлет на клиент. но если задач нет (а их чаще нет, чем они есть), то происходит бессмысленная работа. решил сделать так, что задачи сами оповещают хаб клиентов о своем прогрессе по каналу, но другой вопрос, если задача "упала", а такое вполне возможно, то последнее сообщение улетевшее на клиент будет о том, что задача жива, и получается что клиент никак не узнает о завершении задачи.
как это лучше реализовать, кто-то знает?
Таймаут к таскам пришурупить можно?

Alexander
25.09.2018
06:09:40
есть задачи, они обрабатывают данные, и информируют о своем выполнении хаб, в хабе висят клиенты
ужос кокой. в хабе висят клиенты... :)

Google

The
25.09.2018
06:11:13
ок, представь себе два юзера открыли мой сайт, и у них есть внизу прилипший блок отображающий полоску, которая заполняется - это прогресс задач. данные о выполнении задач они получают по WebSocket.

Alexander
25.09.2018
06:11:53
ну, и что?
ты не пробовал в комнате web-мастеров спросить?

The
25.09.2018
06:13:18
ну, и что?
есть два подхода о которых я знаю: опрашиваем раннеры, либо раннеры оповещают сами о прогрессе.

Alexander
25.09.2018
06:13:23
ну, попробуй, запости такую простыню ребятам из PHP :)

The
25.09.2018
06:13:25
я описал с какими трудностями столкнулся.
окей, необязательно отвечать если сказать нечего

b0000000000000t
25.09.2018
06:15:58

Alexander
25.09.2018
06:16:10
Блин, но финальный вопрос - прекрасен: как это лучше реализовать, кто-то знает?
я прочитал весь текст, не слишком много там понял, но финальный вопрос меня просто добил :)

Сергей
25.09.2018
06:23:22

Alexander
25.09.2018
06:23:27
Вадим, не пиши так долго! Пиши проще!

Google

Alexander
25.09.2018
06:23:47
я прочитал весь текст, не слишком много там понял, но финальный вопрос меня просто добил :)
Мне кажется вам стоит завести блог. Или твиттор. Или инстаграмм. Обычно туда пишут свои мысли, которые никому другому не интересны. От вас очень много бессмысленно флуда. Человек задал вопрос, на который ответить вы не можете (не хотите) и вы нафлудили десяток бессмысленных, не несущих нагрузки сообщений. Если не сложно, то хотя бы схлопывайте ваши мысли в одно сообщение

b0000000000000t
25.09.2018
06:24:25

The
25.09.2018
06:25:27

Yo
25.09.2018
06:25:46

Alexander
25.09.2018
06:26:49


Alexander
25.09.2018
06:28:04
ребятки, как реализовать такой паттерн, есть задачи, они обрабатывают данные, и информируют о своем выполнении хаб, в хабе висят клиенты по WebSocket и им рассылаются сообщения о прогрессе задач.
сначала сделал по тикеру, хаб опрашивает этот пулл задач раз в 500мс., собирает данные - и шлет на клиент. но если задач нет (а их чаще нет, чем они есть), то происходит бессмысленная работа. решил сделать так, что задачи сами оповещают хаб клиентов о своем прогрессе по каналу, но другой вопрос, если задача "упала", а такое вполне возможно, то последнее сообщение улетевшее на клиент будет о том, что задача жива, и получается что клиент никак не узнает о завершении задачи.
как это лучше реализовать, кто-то знает?
Или попробуйте опрашивать о статусе через Лонг-поллинг, возможно снизится нагрузка. Если хотите решить задачу вторым способом - пускайте херт-бит сигналы которые пингуют задачу. И настройте полиси - не ответил на три-пять херт-битов подряд - задача считается мертвой


The
25.09.2018
06:28:32
Я думал может какой-то паттерн есть под это дело, ведь проблема уже наверняка решена и объезжана, и вопросы разделения обязанностей и ответственности уже тоже известны.

Alexander
25.09.2018
06:29:00
это вы о Go тут флудите такими интересными мыслями?

b0000000000000t
25.09.2018
06:29:14

The
25.09.2018
06:29:48

Alexander
25.09.2018
06:30:20

The
25.09.2018
06:31:06


Zver
25.09.2018
06:31:53
ребятки, как реализовать такой паттерн, есть задачи, они обрабатывают данные, и информируют о своем выполнении хаб, в хабе висят клиенты по WebSocket и им рассылаются сообщения о прогрессе задач.
сначала сделал по тикеру, хаб опрашивает этот пулл задач раз в 500мс., собирает данные - и шлет на клиент. но если задач нет (а их чаще нет, чем они есть), то происходит бессмысленная работа. решил сделать так, что задачи сами оповещают хаб клиентов о своем прогрессе по каналу, но другой вопрос, если задача "упала", а такое вполне возможно, то последнее сообщение улетевшее на клиент будет о том, что задача жива, и получается что клиент никак не узнает о завершении задачи.
как это лучше реализовать, кто-то знает?
Получать подтверждение о получении сообщения.

The
25.09.2018
06:32:03

Zver
25.09.2018
06:36:18

The
25.09.2018
06:36:41
буду думать как сделать именно сам раннер который не будет падать или зависать. ладно спасибо всем. пойду порисую схемки, обмозгую.

Alexander
25.09.2018
06:37:56
Это все о Go было?

Zver
25.09.2018
06:39:23

Google

Alexander
25.09.2018
06:40:21
Как исправить свою вину?
Ну, расскажите, пожалуйста! Не надо так высокомерно молчать, Александр!
тут почти две тысячи "участникиков". И почти все молчат. А вы, Александр, упрекаете меня в том, что я тут что-то говорю... Ай-ай

Yo
25.09.2018
06:59:04

Мерлин
25.09.2018
06:59:31

Alexander
25.09.2018
07:00:10
да говорить вобще некрасиво, судя по всему.

Yo
25.09.2018
07:01:53
Это не так
что именно? говорить/спрашивать про себя "как исправить свою вину"..... или одергивать про фичи в раст-е?
да, говорить "без дела" - ну так себе..... не красиво.

Alexander
25.09.2018
07:02:29
Даже, глядя на этих пацанов, которые тут орут вокруг: "Я спрашивал про одно, а они мне - про другое"... Эти пацаны только через несколько лет, может быть, поймут что им именно про то, что они спрашивали, и сказали...
Говорить иногда вобще неприлично, в общем. :(

Viktor
25.09.2018
07:06:25
Девочки, не сорьтесь

Yo
25.09.2018
07:06:30

Alexander
25.09.2018
07:06:45

Мерлин
25.09.2018
07:08:14
ребятки, как реализовать такой паттерн, есть задачи, они обрабатывают данные, и информируют о своем выполнении хаб, в хабе висят клиенты по WebSocket и им рассылаются сообщения о прогрессе задач.
сначала сделал по тикеру, хаб опрашивает этот пулл задач раз в 500мс., собирает данные - и шлет на клиент. но если задач нет (а их чаще нет, чем они есть), то происходит бессмысленная работа. решил сделать так, что задачи сами оповещают хаб клиентов о своем прогрессе по каналу, но другой вопрос, если задача "упала", а такое вполне возможно, то последнее сообщение улетевшее на клиент будет о том, что задача жива, и получается что клиент никак не узнает о завершении задачи.
как это лучше реализовать, кто-то знает?

Alexander
25.09.2018
07:08:20
Yo, ты же в воскересенье подписался на канал Rust, я сам это видел! Вот и давай как-то фильтровать любовь? Хорошо?

Мерлин
25.09.2018
07:08:48
Либо вы сейчас прекращаете, либо я выдаю вам ридонли на сутки

Alexander
25.09.2018
07:09:11
Я - прекращаю

Nick
25.09.2018
07:11:07
Я только попкорн взял

Alexander
25.09.2018
07:11:26
у этой схемы есть проблема, что надо или заранее знать примерное время выполнение задачи и выставлять таймаут в контексте исходя из этого. или все же периодически опрашивать статус и увеличивать таймаут, если work in progress

The
25.09.2018
07:11:33
как быть если задача выполняется от нескольких секунд до нескольких часов, там таймаут не получится сделать. с хартбитом понятно.

Google

Alexander
25.09.2018
07:12:20
? как говорил один знакомый профессор "если мысли сходятся значит они ограниченны. будем надеятся что наши ограничены только снизу"

Мерлин
25.09.2018
07:12:43

The
25.09.2018
07:13:22
Ну вот я создаю ctx.WithTimeout, какое время указывать? Или вы не про это?
Или взять количество заданий и перемножить?)

Мерлин
25.09.2018
07:15:20
у тебя по одной горутине на задачу, которая мониторит её состояние
и если что, шлёт на вебсокет сообщения

Admin
ERROR: S client not available

Мерлин
25.09.2018
07:17:06

The
25.09.2018
07:18:10
Задача у меня это если что:
- выбрать из базы 500+ URL
- поднять Chrome
- начать обходить страницы
- обрабатываем результаты, вставляем в базу
У хрома есть ещё вкладки
Они тоже залипать могут
Там контекс закрывается если страница не ответила за 60 секунд

Zver
25.09.2018
07:20:01

The
25.09.2018
07:20:23
Не)) chromedp очень глючный
Другую либу забыл название

Zver
25.09.2018
07:20:38

The
25.09.2018
07:20:45
cdp mafredi
Как то так погуглите

Google

The
25.09.2018
07:21:06
Там 130 лайков но работает как часы
С хромдп намучился я

Zver
25.09.2018
07:21:24

Olzhas
25.09.2018
07:21:30
https://github.com/mafredri/cdp

The
25.09.2018
07:22:04
В chromedp нет возможности узнать когда страница загрузилась
Там с этим жопа какая-то

Zver
25.09.2018
07:22:18
cdp mafredi
Спасибо. У меня кстати сохранена ссылка на него. )

The
25.09.2018
07:22:29
Через раз страницы грузятся по 60 секунд

Zver
25.09.2018
07:22:32

The
25.09.2018
07:22:41
Cdp пушка и автор очень отзывчивый

Duamel
25.09.2018
07:23:08

Zver
25.09.2018
07:23:16
Потыкаю его значит. )

Bohdan
25.09.2018
07:27:04
плюсую, использовал malfredri для одного челленджа - было норм, лучше альтернатив

Zver
25.09.2018
07:27:07

The
25.09.2018
07:39:06

Dmitri
25.09.2018
07:39:20

Vadim
25.09.2018
07:49:14

Dmitri
25.09.2018
07:51:41