Barra de progreso remota

El trabajo que hago a menudo implica implementar un lote de trabajos en una máquina y luego marcharme.

Para minimizar la rotación, soy un gran admirador de Pushover para recibir notificaciones al finalizar. Pushover es fantástico porque es una llamada API de servicio web que se puede integrar fácilmente en varios idiomas y scripts .

Lo que estoy buscando es algo muy similar, que presentaría una barra de progreso accesible desde la web, que sería tan fácil de integrar como una biblioteca de barra de progreso de línea de comando normal. De esta manera, puedo evaluar mejor qué tan pronto terminará algo, si estoy lejos de mi máquina principal.

La idea sería: API Call crea un UID para una barra de progreso, con una cantidad esperada de actualizaciones. Luego, el cliente puede actualizar la cantidad de actualizaciones ejecutadas a través de otra llamada ( curlo httplibpor ejemplo). La barra de progreso debe ser accesible como una simple página web.

Espero un servicio de terceros, ya que no puedo simplemente ejecutar apache en las máquinas, por lo general están protegidas por un firewall.

Nota : definitivamente preferiría un servicio, pero hipotéticamente podría estar abierto a algo que pueda alojar (¿nivel gratuito de AWS?).

Respuestas (1)

Siempre que su lote sea un script Bash detrás del firewall, la forma ideal de hacerlo sería AWS API Manager.

Por ejemplo:

  1. Haga un contador en su script de shell, que se incrementará y, después de alcanzar algún valor, actualizará algunos cubos S3
  2. La actualización en los archivos del depósito invocará la función Lambda que actualizará alguna variable global
  3. Puede crear una API en el administrador de API que verificará esta variable y devolverá el progreso

Por supuesto, puede crear fácilmente una interfaz web para su Lambda.

Otra opción para esta tarea es WebSockets en API Manager que permite la comunicación bidireccional sin servidor y es aún más simple porque no necesita una interfaz web y probablemente no necesite Lambda, API Manager puede enviar el progreso directamente a su Pushover y/ o dispositivo.

Otra posible opción es Step Function, mira este ejemplo que hace lo mismo que describiste.

Múltiples formas de implementar esto.