Веб страница, показывающая логи воркера очереди

Привет!

Хочу сделать что-то на подобии www.browserstack.com/screenshots. Тоесть когда стартуется задача, показывать выполнение в реальном времени. В идеале даже показывать состояние каждой из задач.

При чем, задачи должны падать в очередь. Потом когда воркер берет задачу он каким-то образом передает свое состояние веб странице.

Вопрос — какая технология / библиотеки позволяют это реализовать?

Какой механизм очередей при этом стоит использовать?

Спасибо!

Юрий

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Посмотрите в сторону centrifugo. Воркер по мере выполнения отправляет сообщения в centrifugo, а она уже по сокетам рассылает сообщения на клиенты.

Судя по описанию, тут незачем что-то усложнять. Возьмите что-то вроде github.com/Automattic/kue, где уже есть и очереди, и воркеры, и UI показывающий в риал-тайме логи и процент выполнения полученные от воркеров.

На деле не факт что все процессы готовы тебе отчитаться о состоянии. Куда проще самому написать скрипт, который просто будет дёргать что надо и узнавать что надо.

То есть смотри как: запускается процесс на сервере, неуправляемый. Или несколько параллельно (обычно не требуется, это геморно, опасно по DDOS). Создаётся какая-то структура данных (например, временная таблица в базе). И есть отдельный слушатель, который может эту таблицу опросить. Со стороны браузера — тупое обновление JSON, всей страницы, или ифрейма. С ифреймом проще — не надо лишнего парсинга.

В большинстве случаев эти понты нахрен никому не улыбались. Попробуй загнать файл на тест на VirusTotal, посмотри как там работает, и все довольны. Никаких излишеств.

С библиотеками будешь дольше разбираться, чем самому накатать. Имеет смысл только если у тебя основной бизнес на этих красивостях работает, то есть очень частая операция и пользователю надо показывать как красиво всё работает за его деньги. Акцент именно на деньгах — является ли это payload.

Якщо по-православному, то Elixir + Websockets + GenStage.
Якщо це не зовсім ріалтайм треба, то можна обмежитися short/long pooling + sidekiq + sidekiq-status.

Підписатись на коментарі