From a242f744d5d7533d041a4bba8b10108272ba4857 Mon Sep 17 00:00:00 2001 From: simon Date: Mon, 27 Sep 2021 17:45:44 +0700 Subject: [PATCH] moove startup functions to ready() method to avoid double execs --- tubearchivist/home/__init__.py | 48 +------------------------------- tubearchivist/home/apps.py | 51 ++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+), 47 deletions(-) diff --git a/tubearchivist/home/__init__.py b/tubearchivist/home/__init__.py index 7b19ef5..736385d 100644 --- a/tubearchivist/home/__init__.py +++ b/tubearchivist/home/__init__.py @@ -1,51 +1,5 @@ -""" handle startup """ - -import os - -from home.src.config import AppConfig -from home.src.helper import del_message, set_message -from home.src.index_management import index_check +""" handle celery startup """ from .tasks import app as celery_app - -def sync_redis_state(): - """make sure redis gets the config.json values""" - print("sync redis") - config_handler = AppConfig() - config_handler.load_new_defaults() - config = config_handler.config - sort_order = config["archive"]["sort"] - set_message("sort_order", sort_order, expire=False) - hide_watched = bool(int(config["archive"]["hide_watched"])) - set_message("hide_watched", hide_watched, expire=False) - show_subed_only = bool(int(config["archive"]["show_subed_only"])) - set_message("show_subed_only", show_subed_only, expire=False) - - -def make_folders(): - """make needed cache folders here so docker doesn't mess it up""" - folders = ["download", "channels", "videos", "import", "backup"] - config = AppConfig().config - cache_dir = config["application"]["cache_dir"] - for folder in folders: - folder_path = os.path.join(cache_dir, folder) - try: - os.makedirs(folder_path) - except FileExistsError: - continue - - -def release_lock(): - """make sure there are no leftover locks set in redis on container start""" - all_locks = ["manual_import", "downloading"] - for lock in all_locks: - print("release leftover lock: " + lock) - del_message(lock) - - __all__ = ("celery_app",) -make_folders() -sync_redis_state() -index_check() -release_lock() diff --git a/tubearchivist/home/apps.py b/tubearchivist/home/apps.py index e7d1c7e..28c504d 100644 --- a/tubearchivist/home/apps.py +++ b/tubearchivist/home/apps.py @@ -1,6 +1,57 @@ +"""handle custom startup functions""" + +import os + from django.apps import AppConfig +from home.src.config import AppConfig as ArchivistConfig +from home.src.helper import del_message, set_message +from home.src.index_management import index_check + + +def sync_redis_state(): + """make sure redis gets the config.json values""" + print("sync redis") + config_handler = ArchivistConfig() + config_handler.load_new_defaults() + config = config_handler.config + sort_order = config["archive"]["sort"] + set_message("sort_order", sort_order, expire=False) + hide_watched = bool(int(config["archive"]["hide_watched"])) + set_message("hide_watched", hide_watched, expire=False) + show_subed_only = bool(int(config["archive"]["show_subed_only"])) + set_message("show_subed_only", show_subed_only, expire=False) + + +def make_folders(): + """make needed cache folders here so docker doesn't mess it up""" + folders = ["download", "channels", "videos", "import", "backup"] + config = ArchivistConfig().config + cache_dir = config["application"]["cache_dir"] + for folder in folders: + folder_path = os.path.join(cache_dir, folder) + try: + os.makedirs(folder_path) + except FileExistsError: + continue + + +def release_lock(): + """make sure there are no leftover locks set in redis on container start""" + all_locks = ["manual_import", "downloading", "dl_queue", "dl_queue_id"] + for lock in all_locks: + response = del_message(lock) + if response: + print("deleted leftover key from redis: " + lock) class HomeConfig(AppConfig): + """call startup funcs""" + default_auto_field = "django.db.models.BigAutoField" name = "home" + + def ready(self): + release_lock() + index_check() + sync_redis_state() + make_folders()