aboutsummaryrefslogtreecommitdiffstats
path: root/python/task_runner.py
blob: bbb6a2e9aa077c4aa042e23f0824462a3cae3d3d (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
36
37
38
39
import logging
import os
import redis
import socket
import tasks
from systemd.daemon import notify
from systemd import journal
from json import loads, dumps
from db import dbconn
from termcolor import colored

def run():
    hostname = socket.gethostname()
    ET = dbconn('etdb')
    if hostname == 'debian':
        q = redis.Redis(unix_socket_path='/var/run/redis/redis.sock')
        os.environ['OMP_NUM_THREADS'] = '8'
    else:
        q = redis.Redis(host='debian')
        os.environ['OMP_NUM_THREADS'] = '4'
    notify("READY=1")
    while True:
        f, args = loads(q.blpop("tasks")[1].decode('utf-8'))
        journal.send("Running '{}'".format(f), ARGS=dumps(args))
        if f == 'generate_scenarios':
            args += [ET]
        getattr(tasks, f)(*args)
        journal.send("'{}' completed".format(f))
        if f == "build_portfolio":
            q.rpush("tasks",  dumps(("build_scenarios", args)))
        if f == "build_scenarios":
            q.rpush("tasks", dumps(("generate_scenarios", args[:-1])))
    ET.close()

if __name__=="__main__":
    logger = logging.getLogger('intex')
    logger.setLevel(logging.INFO)
    logger.addHandler(logging.StreamHandler())
    run()