From ec0f9f611796ab67ce816d07f807701cb688cbeb Mon Sep 17 00:00:00 2001 From: BonfaceKilz Date: Tue, 16 Feb 2021 16:19:05 +0300 Subject: Add basic worker for processing commands This will later be replaced with GNU Guile --- sheepdog/worker.py | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 sheepdog/worker.py diff --git a/sheepdog/worker.py b/sheepdog/worker.py new file mode 100644 index 0000000..b5681ce --- /dev/null +++ b/sheepdog/worker.py @@ -0,0 +1,36 @@ +"""Daemon that processes commands""" +import os +import sys +import time +import redis +import redis.connection + + +# Enable importing from one dir up since gn3 isn't installed as a globally +sys.path.append( + os.path.abspath(os.path.join(os.path.dirname(__file__), + '..'))) + + +def run_jobs(conn): + """Process the redis using a redis connection, CONN""" + # pylint: disable=E0401, C0415 + from gn3.commands import run_cmd + cmd_id = str(conn.lpop("GN2::job-queue")) + if bool(cmd_id): + cmd = conn.hget("cmd", cmd_id) + if cmd and (str(conn.hget(cmd, "status")) not in ["success", + "error"]): + result = run_cmd(cmd) + cmd.hset("result", result.get("output"), cmd_id) + if result.get("code") == 0: # Success + cmd.hset("status", "success", cmd_id) + else: + cmd.hset("status", "error", cmd_id) + + +if __name__ == "__main__": + redis_conn = redis.Redis() + while True: # Daemon that keeps running forever: + run_jobs(redis_conn) + time.sleep(0.1) -- cgit v1.2.3