Commit 4473e6b2 authored by Julian Rother's avatar Julian Rother

Update manager.py

parent 33ec8268
......@@ -8,30 +8,31 @@ import configparser
import psutil
import subprocess
from workerapi import WorkerApi
import json
config = configparser.ConfigParser()
config.read('config.ini')
scheduler = sched.scheduler()
def run_scheduler():
time.sleep(1) # weird things on startup
while True:
scheduler.run()
time.sleep(1)
time.sleep(1) # weird things on startup
while True:
scheduler.run()
time.sleep(1)
def sched_func(delay, priority=0, firstdelay=None, args=[], kargs={}):
if firstdelay == None:
firstdelay = random.randint(1, 10)
def wrapper(func):
def sched_wrapper():
try:
func(*args, **kargs)
except Exception:
traceback.print_exc()
scheduler.enter(delay, priority, sched_wrapper)
scheduler.enter(firstdelay, priority, sched_wrapper)
return func
return wrapper
if firstdelay == None:
firstdelay = random.randint(1, 10)
def wrapper(func):
def sched_wrapper():
try:
func(*args, **kargs)
except Exception:
traceback.print_exc()
scheduler.enter(delay, priority, sched_wrapper)
scheduler.enter(firstdelay, priority, sched_wrapper)
return func
return wrapper
api = WorkerApi(config['API']['BASE'],config['API']['KEY'])
......@@ -39,20 +40,28 @@ threading.Thread(target=run_scheduler, daemon=True).start()
@sched_func(5)
def ping_website_for_host():
# ping so the website knows our host is still alive
if not api.worker_ping():
print("Error sending host ping")
# ping so the website knows our host is still alive
if not api.worker_ping():
print("Error sending host ping")
@sched_func(5)
def get_job():
if psutil.cpu_percent(interval=3) > 85:
return
j = api.worker_schedule(config['JOBS']['TYPES'])
if not j:
return
print("id: %i, data: %s, all: %s"%(j['id'],j['data'],j))
subprocess.Popen(['./worker.py', str(j['id']), str(j['type']), str(j['priority']) , str(j['data']) ] )
print("forked")
procs = []
while True:
time.sleep(10)
for p in procs:
p.poll()
if p.returncode == None:
continue
print('done', p.returncode)
p.wait()
procs.remove(p)
if psutil.cpu_percent() > 85:
print("SLEEP CPU")
time.sleep(0.1)
continue
j = api.worker_schedule(config['JOBS']['TYPES'])
if not j:
print("SLEEP NOJOB")
time.sleep(1)
continue
print("id: %i, data: %s, all: %s"%(j['id'],j['data'],j))
procs.append(subprocess.Popen(['./worker.py', str(j['id']), str(j['type']), str(j['priority']) , str(j['data']) ] ))
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment