This repository has been archived on 2023-11-11. You can view files and clone it, but cannot push or open issues or pull requests.
automated-youtube-dl/server/background.py

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)