Select Git revision
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
scheduler.py 1.11 KiB
from server import *
import threading
import sched
from time import sleep
scheduler = sched.scheduler()
def run_scheduler():
sleep(1) # UWSGI does weird things on startup
while True:
scheduler.run()
sleep(10)
def sched_func(delay, priority=0, firstdelay=None, args=[], kargs={}):
if firstdelay == None:
firstdelay = random.randint(1, 120)
def wrapper(func):
def sched_wrapper():
with app.test_request_context(base_url='https://video.fsmpi.rwth-aachen.de/'):
try:
if config.get('DEBUG', False):
print("Scheduler: started {} (frequency 1/{}s)".format(func.__name__, delay))
func(*args, **kargs)
except Exception:
traceback.print_exc()
notify_admins('scheduler_exception', name=func.__name__,
traceback=traceback.format_exc())
scheduler.enter(delay, priority, sched_wrapper)
scheduler.enter(firstdelay, priority, sched_wrapper)
print("Scheduler: registered {} (frequency 1/{}s, start delay: {}s)".format(func.__name__, delay, firstdelay))
return func
return wrapper
if not app.config['DISABLE_SCHEDULER']:
threading.Thread(target=run_scheduler, daemon=True).start()