Skip to content
Snippets Groups Projects
Select Git revision
  • 53ed7175876325f4d6f9c2b411d4763ec747833c
  • master default protected
  • intros
  • live_sources
  • bootstrap4
  • modules
6 results

schedule.py

Blame
  • Forked from Video AG Infrastruktur / website
    Source project has a limited visibility.
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    scheduler.py 930 B
    from server import *
    import threading
    import sched
    
    scheduler = sched.scheduler()
    def run_scheduler():
    	time.sleep(1) # UWSGI does weird things on startup
    	while True:
    		scheduler.run()
    		time.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():
    				try:
    					if config.get('DEBUG', False):
    						print("Scheduler: started {} (frequency 1/{}s)".format(func.__name__, delay))
    					func(*args, **kargs)
    				except Exception:
    					traceback.print_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
    
    threading.Thread(target=run_scheduler, daemon=True).start()