38 lines
1.3 KiB
Python
38 lines
1.3 KiB
Python
import threading
|
|
import time
|
|
from datetime import datetime, timezone
|
|
|
|
from server import opts
|
|
from server.api import shared
|
|
from server.mysql import db_logger, query
|
|
|
|
logger = db_logger('BACKGROUND', 'logs')
|
|
|
|
|
|
def start():
|
|
threading.Thread(target=check_dict).start()
|
|
threading.Thread(target=jobs_mysql).start()
|
|
|
|
|
|
def jobs_mysql():
|
|
"""
|
|
Background thread that does all the stuff related to jobs and the database
|
|
"""
|
|
query("UPDATE `jobs` SET `result`='exited' where result='running'", ()) # Set old jobs to finished in case the last process died
|
|
# while True:
|
|
# for _, job in shared.global_job_tracker.jobs.items():
|
|
# if job.status == 'finished':
|
|
# query("UPDATE `jobs` SET `result` = 'finished' WHERE `jobs`.`id` = %s", (job.id(),))
|
|
# logger.debug(f"Marked job as done: {job.id()}")
|
|
# time.sleep(1)
|
|
|
|
|
|
def check_dict():
|
|
while True:
|
|
now = int(datetime.now(timezone.utc).timestamp() * 1e3)
|
|
keys_to_delete = [key for key, j in shared.global_job_tracker.jobs.items() if j.end_time() and now - j.end_time() >= opts.jobs_cleanup_time * 60 * 1000]
|
|
for key in keys_to_delete:
|
|
shared.global_job_tracker.del_job(key)
|
|
logger.debug(f'Deleted old job status: {key}')
|
|
time.sleep(opts.jobs_cleanup_time)
|