blob: 55dccc2fba3f68ed5fac15c41eb46bf47510218c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
"""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("GN3::job-queue"))
if bool(cmd_id):
cmd = conn.hget(name=cmd_id, key="cmd")
if cmd and (str(conn.hget(cmd, "status")) == "queued"):
result = run_cmd(cmd)
conn.hset(name=cmd_id, key="result", value=result.get("output"))
if result.get("code") == 0: # Success
conn.hset(name=cmd_id, key="status", value="success")
else:
conn.hset(name=cmd_id, key="status", value="error")
if __name__ == "__main__":
redis_conn = redis.Redis()
while True: # Daemon that keeps running forever:
run_jobs(redis_conn)
time.sleep(0.1)
|