diff --git a/webui/app.py b/webui/app.py index 0c6cd5ef..08f1907a 100644 --- a/webui/app.py +++ b/webui/app.py @@ -1,6 +1,7 @@ import json import os import sys +import gc import tempfile from importlib.resources import files @@ -178,6 +179,7 @@ def run_graphgen(params: WebuiParams, progress=gr.Progress()): "nodes": nodes, } + engine = None try: # 4. Initialize and Run Engine engine = Engine(config, operators) @@ -214,6 +216,10 @@ def run_graphgen(params: WebuiParams, progress=gr.Progress()): raise gr.Error(f"Error occurred: {str(e)}") finally: + if engine: + del engine + gc.collect() + # Clean up workspace cleanup_workspace(working_dir) # Optional: keep for debugging or enable diff --git a/webui/utils/cache.py b/webui/utils/cache.py index 0c9412f2..eb537c49 100644 --- a/webui/utils/cache.py +++ b/webui/utils/cache.py @@ -1,5 +1,7 @@ import os import shutil +import stat +import time import uuid @@ -17,6 +19,14 @@ def setup_workspace(folder): return log_file, working_dir -def cleanup_workspace(folder): - if os.path.exists(folder): - shutil.rmtree(folder) +def cleanup_workspace(working_dir): + if not os.path.exists(working_dir): + return + st = os.stat(working_dir) + os.chmod(working_dir, st.st_mode | stat.S_IWRITE) + + time.sleep(0.5) + try: + shutil.rmtree(working_dir) + except Exception: + pass