91 lines
2.9 KiB
Python
91 lines
2.9 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
import logging
|
|
import random
|
|
import signal
|
|
import sys
|
|
import time
|
|
from logging.handlers import TimedRotatingFileHandler
|
|
from pprint import pprint
|
|
|
|
from backend import app, main_logger
|
|
|
|
from apscheduler.schedulers.background import BackgroundScheduler
|
|
|
|
from backend.cron.cron_state_checker import recorder_checker
|
|
|
|
cron_log_handler = TimedRotatingFileHandler(app.config.get('CRON_LOG_FILE'), interval=1, when='d', backupCount=3)
|
|
cron_log_handler.setFormatter(logging.Formatter('[%(asctime)s] - %(funcName)20s() %(message)s'))
|
|
cron_logger = logging.getLogger("mal.cron")
|
|
cron_logger.addHandler(cron_log_handler)
|
|
logging.getLogger("apscheduler.scheduler").addHandler(cron_log_handler)
|
|
logging.getLogger("apscheduler.executors.default").addHandler(cron_log_handler)
|
|
|
|
scheduler = None
|
|
|
|
|
|
def get_default_scheduler():
|
|
cron_logger.debug("creating scheduler!")
|
|
global scheduler
|
|
scheduler = BackgroundScheduler()
|
|
scheduler.daemonic = False
|
|
|
|
return scheduler
|
|
|
|
|
|
def add_default_jobs(sched=None, testing=False):
|
|
global scheduler
|
|
if sched is None:
|
|
sched = scheduler
|
|
|
|
if testing:
|
|
check_recorder_state_job = sched.add_job(recorder_checker.check_object_state, 'interval', seconds=40,
|
|
id="check_recorder_state_job")
|
|
|
|
else:
|
|
check_recorder_state_job = sched.add_job(recorder_checker.check_object_state, 'interval', minutes=2,
|
|
id="check_recorder_state_job")
|
|
|
|
return [check_recorder_state_job]
|
|
|
|
|
|
def signal_handler(sig, frame):
|
|
print('You pressed Ctrl+C -> shutting down scheduler!')
|
|
if scheduler is not None:
|
|
scheduler.shutdown()
|
|
sys.exit(0)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
# check_for_ingestibles_and_ingest()
|
|
# remove_obsolete_media_files_objects()
|
|
stream_handler = logging.StreamHandler()
|
|
stream_handler.setFormatter(
|
|
logging.Formatter('[%(asctime)s] {%(threadName)s} %(levelname)s in %(module)s, line %(lineno)d: %(message)s'))
|
|
cron_logger.addHandler(stream_handler)
|
|
cron_logger.setLevel(logging.INFO)
|
|
|
|
signal.signal(signal.SIGINT, signal_handler)
|
|
get_default_scheduler()
|
|
add_default_jobs(testing=True)
|
|
cron_logger.info("Starting internal scheduler")
|
|
scheduler.start()
|
|
|
|
c = 0
|
|
while c < 10:
|
|
sleep_time = random.randint(10, 20)
|
|
cron_logger.info("Sleeping for {}s".format(sleep_time))
|
|
time.sleep(sleep_time)
|
|
recorder_id = random.randint(0, 15)
|
|
cron_logger.info("Using recorder id {}".format(recorder_id))
|
|
recorder_checker.add_object_to_state_check(recorder_id)
|
|
recorder_checker.add_object_to_state_check(recorder_id+1)
|
|
pprint(recorder_checker.get_current_state())
|
|
|
|
while True:
|
|
user_in = input("Type >exit< to quit.")
|
|
if user_in == "exit" or user_in == ">exit<":
|
|
break
|
|
|
|
scheduler.shutdown()
|