Удаленный индикатор прогресса

Вопрос или проблема

Работа, которую я выполняю, часто включает развертывание пакета заданий на машине, после чего я ухожу.

Чтобы минимизировать время ожидания, я огромный поклонник Pushover для уведомлений о завершении. Pushover фантастичен, потому что это вызов веб-сервиса API, который можно легко интегрировать в различные языки и скрипты.

Что я ищу, так это что-то очень похожее, что бы представляло собой доступную через веб-интерфейс панель прогресса, которая была бы так же легка для интеграции, как обычная командная библиотека панели прогресса. Таким образом, я могу лучше оценить, как скоро что-то завершится, если я нахожусь вдали от своей основной машины.

Идея была бы следующей: вызов API создает UID для панели прогресса с ожидаемым количеством обновлений. Затем клиент может обновить количество выполненных обновлений через другой вызов (curl или httplib, например). Панель прогресса сама должна быть доступна в виде простой веб-страницы.

Я надеюсь на сторонний сервис, так как не могу просто установить apache на машинах — обычно они находятся за фаерволом.

Примечание: Я определенно предпочел бы сервис, но гипотетически могу быть открыт для чего-то, что я мог бы разместить сам (AWS Free tier?).

Если ваш пакет – это Bash-скрипт за фаерволом, то идеальный способ сделать это – использовать AWS API Manager.

Например:

  1. Создайте некоторый счетчик в вашем shell-скрипте, который будет увеличиваться и после достижения некоторого значения обновит определенный S3 бакет
  2. Обновление в файлах бакета вызовет функцию Lambda, которая обновит некоторую глобальную переменную
  3. Вы можете создать API в API manager, который будет проверять эту переменную и возвращать прогресс

Конечно, вы можете легко создать веб-интерфейс для вашей Lambda.

Еще один вариант для этой задачи – WebSockets в API Manager, который позволяет безсерверное двустороннее общение, и это еще проще, потому что вам не нужен веб-интерфейс, и, вероятно, вам не нужна Lambda, API Manager может отправлять прогресс напрямую в ваш Pushover и/или устройство.

Еще один возможный вариант – Step Function, смотрите этот пример, который делает то же самое, что вы описали.

Множество способов реализации этого.

Ответ или решение

Удаленная панель прогресса: Реализация и Решения

В современном мире автоматизация процессов и мониторинг выполнения задач играют ключевую роль в оптимизации рабочего времени. Если вы часто запускаете пакетные задания на удаленной машине и хотите отслеживать их прогресс, вам может помочь реализация удаленной панели прогресса. Рассмотрим, как реализовать эту задачу с учетом ваших требований и особенностей инфраструктуры.

Введение в задачу

Из описания задачи видно, что вы ищете удобное решение для отслеживания состояния выполнения задач с минимальными затратами на интеграцию и maintenance. Вы уже используете Pushover для уведомлений, и цель состоит в том, чтобы добавить веб-доступное средство для визуализации прогресса задач. Идеальная реализация должна позволять выполнять API вызовы для создания и обновления прогресса, а также отображения этого прогресса в виде простой веб-страницы.

Возможные решения

Мы можем рассмотреть несколько подходов, включая как использование сторонних сервисов, так и разработку собственного решения, которое можно будет разместить на AWS.

  1. Использование AWS API Gateway и S3

    Вы можете настроить систему на основе AWS API Gateway и Amazon S3, чтобы реализовать свою панель прогресса. Этапы могут выглядеть следующим образом:

    • Создание счетчика: В вашей оболочке (Bash) создайте счетчик, который будет увеличиваться по мере завершения задач.
    • Обновление S3: После достижения определенного значения, экспортируйте состояние счетчика в файл в S3-бакете.
    • Lambda-функция: Активируйте AWS Lambda для мониторинга изменений в S3. Функция будет считывать файл и обновлять глобальную переменную с текущим состоянием прогресса.
    • API для получения данных: Настройте API в AWS API Gateway, который будет возвращать текущее состояние прогресса по запросу.
    • Frontend (по желанию): По необходимости, создайте простой интерфейс для отображения прогресса.
  2. Использование WebSockets в API Gateway

    Если вам нужно более «реальное» время обновления, рассмотрите возможность использования WebSockets в AWS API Gateway. Это решение устранит необходимость в создании frontend интерфейса, так как API Gateway может отправлять обновления непосредственно на ваше устройство или в Pushover.

  3. AWS Step Functions

    Другой вариант — использовать AWS Step Functions для управления задачами. Эта служба позволяет визуализировать состояние выполнения задач и обладает встроенными возможностями для интеграции с другими сервисами AWS. Шаблоны работы можно найти в документации AWS.

Заключение

При выборе решения для реализации удаленной панели прогресса, рассматривайте как сторонние услуги, так и собственные хостинги. AWS предоставляет несколько инструментов, которые не только упростят интеграцию, но и обеспечат аккумуляцию и мониторинг данных. Выбор между API Gateway, WebSockets или Step Functions зависит от ваших специфических нужд и желаемого уровня взаимодействия с системой.

Организуйте свою работу более эффективно, используя возможности AWS, и следите за прогрессом задач даже в удаленном доступе.

Оцените материал
Добавить комментарий

Капча загружается...