diff --git a/scheduler.py b/scheduler.py new file mode 100644 index 0000000000000000000000000000000000000000..e076fd593c613321fc81878ef03d07f8def5f7f3 --- /dev/null +++ b/scheduler.py @@ -0,0 +1,27 @@ +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: + func(*args, **kargs) + except Exception: + traceback.print_exc() + scheduler.enter(delay, priority, sched_wrapper) + scheduler.enter(firstdelay, priority, sched_wrapper) + return func + return wrapper + +threading.Thread(target=run_scheduler, daemon=True).start() diff --git a/server.py b/server.py index ef71a9a9741b9f44fe8d17d19a0b947799a683b7..0c4de2ebbb24c32ea2b8ed656913cd9a80dea616 100644 --- a/server.py +++ b/server.py @@ -2,12 +2,10 @@ from flask import Flask, g, request, url_for, redirect, session, render_template from werkzeug.routing import Rule from functools import wraps from datetime import date, timedelta, datetime, time, MINYEAR -import threading import os import sys import hashlib import random -import sched import traceback import string from socket import gethostname @@ -16,46 +14,12 @@ import math import locale import base64 import json +import time locale.setlocale(locale.LC_ALL, 'de_DE.utf8') app = Flask(__name__) -app.jinja_env.trim_blocks = True -app.jinja_env.lstrip_blocks = True -app.add_template_global(random.randint, name='randint') -app.add_template_global(datetime, name='datetime') -app.add_template_global(timedelta, name='timedelta') -app.add_template_global(gethostname, name='gethostname') -app.add_template_global(min, name='min') -app.add_template_global(max, name='max') - - -scheduler = sched.scheduler() -def run_scheduler(): - import time - 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: - func(*args, **kargs) - except Exception: - traceback.print_exc() - scheduler.enter(delay, priority, sched_wrapper) - scheduler.enter(firstdelay, priority, sched_wrapper) - return func - return wrapper - -threading.Thread(target=run_scheduler, daemon=True).start() - config = app.config config.from_pyfile('config.py.example', silent=True) if sys.argv[0].endswith('run.py'): @@ -65,17 +29,13 @@ config.from_pyfile('config.py', silent=True) if config['DEBUG']: app.jinja_env.auto_reload = True -# get git commit -import subprocess -output = subprocess.check_output(['git', "log", "-g", "-1", "--pretty=%H # %h # %d # %s"]).decode('UTF-8').split('#', 3) -app.jinja_env.globals['gitversion'] = { 'hash': output[1], 'longhash': output[0], 'branch': output[2], 'msg': output[3] } - if not config.get('SECRET_KEY', None): config['SECRET_KEY'] = os.urandom(24) from db import query, modify, show, searchquery from ldap import ldapauth from legacy import legacy_index +from scheduler import sched_func mod_endpoints = [] diff --git a/template_helper.py b/template_helper.py index 9eeab6c463d8b68e7c28a05a0c397b15007d27cf..e397a739f59cfe31f4008a0a03db8ae09daa296a 100644 --- a/template_helper.py +++ b/template_helper.py @@ -1,4 +1,18 @@ from server import * +import subprocess + +app.jinja_env.trim_blocks = True +app.jinja_env.lstrip_blocks = True +app.add_template_global(random.randint, name='randint') +app.add_template_global(datetime, name='datetime') +app.add_template_global(timedelta, name='timedelta') +app.add_template_global(gethostname, name='gethostname') +app.add_template_global(min, name='min') +app.add_template_global(max, name='max') + +# get git commit +output = subprocess.check_output(['git', "log", "-g", "-1", "--pretty=%H # %h # %d # %s"]).decode('UTF-8').split('#', 3) +app.jinja_env.globals['gitversion'] = { 'hash': output[1], 'longhash': output[0], 'branch': output[2], 'msg': output[3] } @app.template_global() def ismod(*args):