Skip to content

Latest commit

 

History

History
83 lines (70 loc) · 2.47 KB

README.md

File metadata and controls

83 lines (70 loc) · 2.47 KB

BoxCraft

unittest license last-commit status format pyversions version


Este proyecto implementa el módulo BoxCraft para establecer un sistema de procesamiento distribuido. Está basado en la gestión de nodos y tareas, aprovechando tanto la versatilidad de Python como la velocidad de Redis.

Características

  • Sistema de nodos que permite roles de líder y lector para una gestión eficiente.
  • Gestiona y supervisa tareas a través de un sistema dinámico basado en Redis.
  • Sistema para administrar tareas y su estado.

Requisitos

  • Python 3.x
  • Redis instalado y configurado

Instalación

A. Clona el repositorio:

user@node: git clone https://github.com/Lucho00Cuba/boxcraft.git

B. Instalar con PIP

user@node: pip install boxcraft

Uso

from boxcraft.controller import Box
from time import sleep as time_sleep
from os import environ

def hello(instance=None, action=None):
    print(f"Action: {action} Instance: {instance}")

if __name__ == "__main__":
    try:
        tasks = { 'action': 'delete', 'name': 'poc-*', 'instances': str(["node-01", "node-02", "node-03", "node-04", "node-05"]) }
        ctx = Box()
        print(f"Node: {ctx._node_name} - Role: {ctx._role} - ID: {ctx._id}")
        # publish data
        ctx.publish(tasks)
        # runner
        while True:
            # getting data
            task = ctx.getting()
            if task == None:
                break
            else:
                print(f"Task: {task}")
                # logic to execute the task... 
                ctx.runner(target=hello, kwargs={"instance": task['instances'], "action": task['action']})
                time_sleep(2)
    except Exception as err:
        print(err)