From c3b0c0a3bfb96032a65a41db91d1867feb934c02 Mon Sep 17 00:00:00 2001 From: Vladimir Mandic Date: Wed, 11 Dec 2024 12:32:34 -0500 Subject: [PATCH] add SD_NO_CACHE env variable Signed-off-by: Vladimir Mandic --- CHANGELOG.md | 1 + modules/files_cache.py | 8 ++++---- modules/shared.py | 4 +++- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4b8f4994c..f215b84ec 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -83,6 +83,7 @@ ### Fixes +- add `SD_NO_CACHE=true` env variable to disable file/folder caching - update `diffusers` - fix README links - fix sdxl controlnet single-file loader diff --git a/modules/files_cache.py b/modules/files_cache.py index fa2241afc..d65e0f4f4 100644 --- a/modules/files_cache.py +++ b/modules/files_cache.py @@ -6,6 +6,7 @@ from typing import Callable, Dict, Iterator, List, Optional, Union from installer import log +do_cache_folders = os.environ.get('SD_NO_CACHE', None) is None class Directory: # forward declaration ... @@ -87,8 +88,6 @@ class Directory(Directory): # pylint: disable=E0102 return not self.is_directory or self.mtime != self.live_mtime - - class DirectoryCache(UserDict, DirectoryCollection): def __delattr__(self, directory_path: str) -> None: directory: Directory = get_directory(directory_path, fetch=False) @@ -126,7 +125,7 @@ def clean_directory(directory: Directory, /, recursive: RecursiveType=False) -> return is_clean -def get_directory(directory_or_path: str, /, fetch:bool=True) -> Union[Directory, None]: +def get_directory(directory_or_path: str, /, fetch: bool=True) -> Union[Directory, None]: if isinstance(directory_or_path, Directory): if directory_or_path.is_directory: return directory_or_path @@ -136,8 +135,9 @@ def get_directory(directory_or_path: str, /, fetch:bool=True) -> Union[Directory if not cache_folders.get(directory_or_path, None): if fetch: directory = fetch_directory(directory_path=directory_or_path) - if directory: + if directory and do_cache_folders: cache_folders[directory_or_path] = directory + return directory else: clean_directory(cache_folders[directory_or_path]) return cache_folders[directory_or_path] if directory_or_path in cache_folders else None diff --git a/modules/shared.py b/modules/shared.py index 01add6d60..f383ee2b6 100644 --- a/modules/shared.py +++ b/modules/shared.py @@ -16,7 +16,7 @@ import fasteners import orjson import diffusers from rich.console import Console -from modules import errors, devices, shared_items, shared_state, cmd_args, theme, history +from modules import errors, devices, shared_items, shared_state, cmd_args, theme, history, files_cache from modules.paths import models_path, script_path, data_path, sd_configs_path, sd_default_config, sd_model_file, default_sd_model_file, extensions_dir, extensions_builtin_dir # pylint: disable=W0611 from modules.dml import memory_providers, default_memory_provider, directml_do_hijack from modules.onnx_impl import initialize_onnx, execution_providers @@ -238,6 +238,8 @@ cpu_memory = round(psutil.virtual_memory().total / 1024 / 1024 / 1024, 2) mem_stat = memory_stats() gpu_memory = mem_stat['gpu']['total'] if "gpu" in mem_stat else 0 native = backend == Backend.DIFFUSERS +if not files_cache.do_cache_folders: + log.warning('File cache disabled: ') class OptionInfo: