diff --git a/app/modules/themoviedb/__init__.py b/app/modules/themoviedb/__init__.py index 167d05ca..00dc5393 100644 --- a/app/modules/themoviedb/__init__.py +++ b/app/modules/themoviedb/__init__.py @@ -34,7 +34,7 @@ class TheMovieDb(_ModuleBase): self.category = CategoryHelper() def stop(self): - pass + self.cache.save() def init_setting(self) -> Tuple[str, Union[str, bool]]: pass diff --git a/app/modules/themoviedb/tmdb_cache.py b/app/modules/themoviedb/tmdb_cache.py index 5db22244..6f887cac 100644 --- a/app/modules/themoviedb/tmdb_cache.py +++ b/app/modules/themoviedb/tmdb_cache.py @@ -1,6 +1,5 @@ import pickle import random -import threading import time from pathlib import Path from threading import RLock @@ -32,15 +31,8 @@ class TmdbCache(metaclass=Singleton): _meta_path: Path = None # TMDB缓存过期 _tmdb_cache_expire: bool = True - # 自动保存暗隔时间 - _save_interval: int = 600 def __init__(self): - # 创建计时器 - self.timer = threading.Timer(self._save_interval, self.save) - self.init_config() - - def init_config(self): self._meta_path = settings.TEMP_PATH / "__tmdb_cache__" self._meta_data = self.__load(self._meta_path) @@ -115,12 +107,12 @@ class TmdbCache(metaclass=Singleton): return self._meta_data.get(key) @staticmethod - def __load(path) -> dict: + def __load(path: Path) -> dict: """ 从文件中加载缓存 """ try: - if Path(path).exists(): + if path.exists(): with open(path, 'rb') as f: data = pickle.load(f) return data @@ -158,6 +150,7 @@ class TmdbCache(metaclass=Singleton): """ 保存缓存数据到文件 """ + meta_data = self.__load(self._meta_path) new_meta_data = {k: v for k, v in self._meta_data.items() if str(v.get("id")) != '0'} @@ -169,12 +162,6 @@ class TmdbCache(metaclass=Singleton): with open(self._meta_path, 'wb') as f: pickle.dump(new_meta_data, f, pickle.HIGHEST_PROTOCOL) - if not force: - # 重新创建计时器 - self.timer = threading.Timer(self._save_interval, self.save) - # 启动计时器 - self.timer.start() - def _random_sample(self, new_meta_data: dict) -> bool: """ 采样分析是否需要保存 @@ -227,9 +214,3 @@ class TmdbCache(metaclass=Singleton): if not cache_media_info: return self._meta_data[key]['title'] = cn_title - - def __del__(self): - """ - 退出 - """ - self.timer.cancel()